All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <200710150928.56916.arnd@arndb.de>

diff --git a/a/1.txt b/N1/1.txt
index 8b91fdc..8bbb39a 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -9,30 +9,24 @@ Looks good, except for two micro-optimization:
 
 Acked-by: Arnd Bergmann <arnd@arndb.de>
 
-> @@ -1361,7 +1356,14 @@ sys_nanosleep(struct timespec __user *rqtp, struct=
- timespec __user *rmtp)
-> =A0=A0=A0=A0=A0=A0=A0=A0if (!timespec_valid(&tu))
-> =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0return -EINVAL;
-> =A0
-> -=A0=A0=A0=A0=A0=A0=A0return hrtimer_nanosleep(&tu, rmtp, HRTIMER_MODE_RE=
-L, CLOCK_MONOTONIC);
-> +=A0=A0=A0=A0=A0=A0=A0ret =3D hrtimer_nanosleep(&tu, &rmt, HRTIMER_MODE_R=
-EL, CLOCK_MONOTONIC);
+> @@ -1361,7 +1356,14 @@ sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp)
+>         if (!timespec_valid(&tu))
+>                 return -EINVAL;
+>  
+> -       return hrtimer_nanosleep(&tu, rmtp, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
+> +       ret = hrtimer_nanosleep(&tu, &rmt, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
 > +
-> +=A0=A0=A0=A0=A0=A0=A0if (ret && rmtp) {
-> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0if (copy_to_user(rmtp, &rmt=
-, sizeof(*rmtp)))
-> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0ret=
-urn -EFAULT;
-> +=A0=A0=A0=A0=A0=A0=A0}
+> +       if (ret && rmtp) {
+> +               if (copy_to_user(rmtp, &rmt, sizeof(*rmtp)))
+> +                       return -EFAULT;
+> +       }
 > +
-> +=A0=A0=A0=A0=A0=A0=A0return ret;
-> =A0}
-> =A0
+> +       return ret;
+>  }
+>  
 
-If it's common to call sys_nanosleep with a NULL rmtp argument, we could sa=
-ve a
-few cycles using=20
+If it's common to call sys_nanosleep with a NULL rmtp argument, we could save a
+few cycles using 
 
 	return hrtimer_nanosleep(&tu, rmtp ? &rmp : NULL, HRTIMER_MODE_REL,
 								 CLOCK_MONOTONIC);
@@ -41,33 +35,25 @@ few cycles using=20
 > index 57efe04..cce8c75 100644
 > --- a/kernel/posix-timers.c
 > +++ b/kernel/posix-timers.c
-> @@ -980,9 +980,19 @@ sys_clock_getres(const clockid_t which_clock, struct=
- timespec __user *tp)
-> =A0static int common_nsleep(const clockid_t which_clock, int flags,
-> =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =
-struct timespec *tsave, struct timespec __user *rmtp)
-> =A0{
-> -=A0=A0=A0=A0=A0=A0=A0return hrtimer_nanosleep(tsave, rmtp, flags & TIMER=
-_ABSTIME ?
-> +=A0=A0=A0=A0=A0=A0=A0struct timespec rmt;
-> +=A0=A0=A0=A0=A0=A0=A0int ret;
+> @@ -980,9 +980,19 @@ sys_clock_getres(const clockid_t which_clock, struct timespec __user *tp)
+>  static int common_nsleep(const clockid_t which_clock, int flags,
+>                          struct timespec *tsave, struct timespec __user *rmtp)
+>  {
+> -       return hrtimer_nanosleep(tsave, rmtp, flags & TIMER_ABSTIME ?
+> +       struct timespec rmt;
+> +       int ret;
 > +
-> +=A0=A0=A0=A0=A0=A0=A0ret =3D hrtimer_nanosleep(tsave, &rmt, flags & TIME=
-R_ABSTIME ?
-> =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0=A0=A0=A0=A0=A0=A0 HRTIMER_MODE_ABS : HRTIMER_MODE_REL,
-> =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0=A0=A0=A0=A0=A0=A0 which_clock);
+> +       ret = hrtimer_nanosleep(tsave, &rmt, flags & TIMER_ABSTIME ?
+>                                  HRTIMER_MODE_ABS : HRTIMER_MODE_REL,
+>                                  which_clock);
 > +
-> +=A0=A0=A0=A0=A0=A0=A0if (ret && rmtp) {
-> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0if (copy_to_user(rmtp, &rmt=
-, sizeof(*rmtp)))
-> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0ret=
-urn -EFAULT;
-> +=A0=A0=A0=A0=A0=A0=A0}
+> +       if (ret && rmtp) {
+> +               if (copy_to_user(rmtp, &rmt, sizeof(*rmtp)))
+> +                       return -EFAULT;
+> +       }
 > +
-> +=A0=A0=A0=A0=A0=A0=A0return ret;
-> =A0}
+> +       return ret;
+>  }
 
 I think it would be better here to propagate the move to a kernel *rmtp
 down to sys_clock_nanosleep so we get the same optimization in
diff --git a/a/content_digest b/N1/content_digest
index 11f0f50..e98a1a3 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -5,9 +5,9 @@
  "Subject\0Re: [PATCH] Rework hrtimer_nanosleep to make sys_compat_nanosleep easier\0"
  "Date\0Mon, 15 Oct 2007 09:28:55 +0200\0"
  "To\0linuxppc-dev@ozlabs.org\0"
- "Cc\0Thomas Gleixner <tglx@linutronix.de>"
+ "Cc\0Anton Blanchard <anton@samba.org>"
+  Thomas Gleixner <tglx@linutronix.de>
   mingo@elte.hu
-  Anton Blanchard <anton@samba.org>
  " linux-kernel@vger.kernel.org\0"
  "\00:1\0"
  "b\0"
@@ -22,30 +22,24 @@
  "\n"
  "Acked-by: Arnd Bergmann <arnd@arndb.de>\n"
  "\n"
- "> @@ -1361,7 +1356,14 @@ sys_nanosleep(struct timespec __user *rqtp, struct=\n"
- " timespec __user *rmtp)\n"
- "> =A0=A0=A0=A0=A0=A0=A0=A0if (!timespec_valid(&tu))\n"
- "> =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0return -EINVAL;\n"
- "> =A0\n"
- "> -=A0=A0=A0=A0=A0=A0=A0return hrtimer_nanosleep(&tu, rmtp, HRTIMER_MODE_RE=\n"
- "L, CLOCK_MONOTONIC);\n"
- "> +=A0=A0=A0=A0=A0=A0=A0ret =3D hrtimer_nanosleep(&tu, &rmt, HRTIMER_MODE_R=\n"
- "EL, CLOCK_MONOTONIC);\n"
+ "> @@ -1361,7 +1356,14 @@ sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp)\n"
+ "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!timespec_valid(&tu))\n"
+ "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EINVAL;\n"
+ "> \302\240\n"
+ "> -\302\240\302\240\302\240\302\240\302\240\302\240\302\240return hrtimer_nanosleep(&tu, rmtp, HRTIMER_MODE_REL, CLOCK_MONOTONIC);\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = hrtimer_nanosleep(&tu, &rmt, HRTIMER_MODE_REL, CLOCK_MONOTONIC);\n"
  "> +\n"
- "> +=A0=A0=A0=A0=A0=A0=A0if (ret && rmtp) {\n"
- "> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0if (copy_to_user(rmtp, &rmt=\n"
- ", sizeof(*rmtp)))\n"
- "> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0ret=\n"
- "urn -EFAULT;\n"
- "> +=A0=A0=A0=A0=A0=A0=A0}\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret && rmtp) {\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (copy_to_user(rmtp, &rmt, sizeof(*rmtp)))\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EFAULT;\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  "> +\n"
- "> +=A0=A0=A0=A0=A0=A0=A0return ret;\n"
- "> =A0}\n"
- "> =A0\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
+ "> \302\240}\n"
+ "> \302\240\n"
  "\n"
- "If it's common to call sys_nanosleep with a NULL rmtp argument, we could sa=\n"
- "ve a\n"
- "few cycles using=20\n"
+ "If it's common to call sys_nanosleep with a NULL rmtp argument, we could save a\n"
+ "few cycles using \n"
  "\n"
  "\treturn hrtimer_nanosleep(&tu, rmtp ? &rmp : NULL, HRTIMER_MODE_REL,\n"
  "\t\t\t\t\t\t\t\t CLOCK_MONOTONIC);\n"
@@ -54,33 +48,25 @@
  "> index 57efe04..cce8c75 100644\n"
  "> --- a/kernel/posix-timers.c\n"
  "> +++ b/kernel/posix-timers.c\n"
- "> @@ -980,9 +980,19 @@ sys_clock_getres(const clockid_t which_clock, struct=\n"
- " timespec __user *tp)\n"
- "> =A0static int common_nsleep(const clockid_t which_clock, int flags,\n"
- "> =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =\n"
- "struct timespec *tsave, struct timespec __user *rmtp)\n"
- "> =A0{\n"
- "> -=A0=A0=A0=A0=A0=A0=A0return hrtimer_nanosleep(tsave, rmtp, flags & TIMER=\n"
- "_ABSTIME ?\n"
- "> +=A0=A0=A0=A0=A0=A0=A0struct timespec rmt;\n"
- "> +=A0=A0=A0=A0=A0=A0=A0int ret;\n"
+ "> @@ -980,9 +980,19 @@ sys_clock_getres(const clockid_t which_clock, struct timespec __user *tp)\n"
+ "> \302\240static int common_nsleep(const clockid_t which_clock, int flags,\n"
+ "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 struct timespec *tsave, struct timespec __user *rmtp)\n"
+ "> \302\240{\n"
+ "> -\302\240\302\240\302\240\302\240\302\240\302\240\302\240return hrtimer_nanosleep(tsave, rmtp, flags & TIMER_ABSTIME ?\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct timespec rmt;\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  "> +\n"
- "> +=A0=A0=A0=A0=A0=A0=A0ret =3D hrtimer_nanosleep(tsave, &rmt, flags & TIME=\n"
- "R_ABSTIME ?\n"
- "> =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n"
- "=A0=A0=A0=A0=A0=A0=A0=A0 HRTIMER_MODE_ABS : HRTIMER_MODE_REL,\n"
- "> =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n"
- "=A0=A0=A0=A0=A0=A0=A0=A0 which_clock);\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = hrtimer_nanosleep(tsave, &rmt, flags & TIMER_ABSTIME ?\n"
+ "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 HRTIMER_MODE_ABS : HRTIMER_MODE_REL,\n"
+ "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 which_clock);\n"
  "> +\n"
- "> +=A0=A0=A0=A0=A0=A0=A0if (ret && rmtp) {\n"
- "> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0if (copy_to_user(rmtp, &rmt=\n"
- ", sizeof(*rmtp)))\n"
- "> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0ret=\n"
- "urn -EFAULT;\n"
- "> +=A0=A0=A0=A0=A0=A0=A0}\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret && rmtp) {\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (copy_to_user(rmtp, &rmt, sizeof(*rmtp)))\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EFAULT;\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  "> +\n"
- "> +=A0=A0=A0=A0=A0=A0=A0return ret;\n"
- "> =A0}\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
+ "> \302\240}\n"
  "\n"
  "I think it would be better here to propagate the move to a kernel *rmtp\n"
  "down to sys_clock_nanosleep so we get the same optimization in\n"
@@ -89,4 +75,4 @@
  "\n"
  "\tArnd <><"
 
-b61c99eb9022bf5ba90ac892d0d402ecd4c9c6f0832cc701df0cf22793ca740a
+e400ae9cf7dd4f24df3e5222fbacdb0dc4f9e847f5ac5dac628502d05431add0

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.