Re: [PATCHv8 9/9] man2: Add uretprobe syscall page

2024-08-16 Thread Alejandro Colomar
Hi Jiri, Steven, On Fri, Aug 16, 2024 at 08:55:47PM GMT, Alejandro Colomar wrote: > > hi, > > there are no args for x86.. it's there just to note that it might > > be different on other archs, so not sure what man page should say > > in such case.. keeping (void) is

Re: [PATCHv8 9/9] man2: Add uretprobe syscall page

2024-08-16 Thread Alejandro Colomar
On Fri, Aug 16, 2024 at 07:03:59PM GMT, Jiri Olsa wrote: > On Fri, Aug 16, 2024 at 01:42:26PM +0200, Alejandro Colomar wrote: > > Hi Steven, Jiri, > > > > On Wed, Aug 07, 2024 at 04:27:34PM GMT, Steven Rostedt wrote: > > > Just in case nobody pinged you, the rest o

Re: [PATCHv8 9/9] man2: Add uretprobe syscall page

2024-08-16 Thread Alejandro Colomar
Hi Steven, Jiri, On Wed, Aug 07, 2024 at 04:27:34PM GMT, Steven Rostedt wrote: > Just in case nobody pinged you, the rest of the series is now in Linus's > tree. Thanks for the ping! I have prepared some tweaks to the patch (see below). Also, I have some doubts. The prototype shows that it has

Re: [PATCHv8 9/9] man2: Add uretprobe syscall page

2024-06-11 Thread Alejandro Colomar
Hi, On Tue, Jun 11, 2024 at 11:30:22PM GMT, Masami Hiramatsu wrote: > On Tue, 11 Jun 2024 13:21:58 +0200 > Jiri Olsa wrote: > > > Adding man page for new uretprobe syscall. > > > > Acked-by: Andrii Nakryiko > > Reviewed-by: Alejandro Colomar > > Signed-

Re: [PATCHv6 9/9] man2: Add uretprobe syscall page

2024-05-22 Thread Alejandro Colomar
l are only made from the user-space trampoline provided by the > kernel. > +Calls from any other place result in a > +.BR SIGILL . > +.SH RETURN VALUE > +The > +.BR uretprobe () > +system call return value is architecture-specific. > +.SH ERRORS > +.TP > +.B SIGILL >

Re: [PATCHv6 9/9] man2: Add uretprobe syscall page

2024-05-21 Thread Alejandro Colomar
Hi Jirka, On Tue, May 21, 2024 at 10:24:30PM GMT, Jiri Olsa wrote: > how about the change below? Much better. I still have a few comments below. :-) > > thanks, > jirka > > > --- > diff --git a/man/man2/uretprobe.2 b/man/man2/uretprobe.2 > new file mode 100644 > index ..959b7a47

Re: [PATCHv6 9/9] man2: Add uretprobe syscall page

2024-05-21 Thread Alejandro Colomar
Hi Jiri, On Tue, May 21, 2024 at 12:48:25PM GMT, Jiri Olsa wrote: > Adding man page for new uretprobe syscall. > > Signed-off-by: Jiri Olsa > --- > man2/uretprobe.2 | 50 > 1 file changed, 50 insertions(+) > create mode 100644 man2/uretprobe.2 >

Re: [PATCHv4 7/7] man2: Add uretprobe syscall page

2024-05-02 Thread Alejandro Colomar
Hi Jiri, On Thu, May 02, 2024 at 10:13:12PM +0200, Jiri Olsa wrote: > > You could add a HISTORY section. > > ok, IIUC for this syscall it should contain just kernel version where > it got merged, right? Yep. > > > > > Have a lovely day! > > thanks for review, > jirka Thanks for the page. H

Re: [PATCHv4 7/7] man2: Add uretprobe syscall page

2024-05-02 Thread Alejandro Colomar
Hi Jiri, On Thu, May 02, 2024 at 02:23:13PM +0200, Jiri Olsa wrote: > Adding man page for new uretprobe syscall. > > Signed-off-by: Jiri Olsa > --- > man2/uretprobe.2 | 45 + > 1 file changed, 45 insertions(+) > create mode 100644 man2/uretprobe.2 >

Re: [PATCH] set_thread_area.2: Add C-SKY document

2023-10-15 Thread Alejandro Colomar
Hi Guo, On Sun, Oct 15, 2023 at 11:07:32AM -0400, guo...@kernel.org wrote: > From: Guo Ren > > C-SKY only needs set_thread_area, no need for get_thread_area, the > same as MIPS. > > Signed-off-by: Guo Ren > Signed-off-by: Guo Ren > --- Patch applied.

Re: set_thread_area.2: csky architecture undocumented

2023-10-14 Thread Alejandro Colomar
ny comments are welcome :) I'm sorry, but I have little understanding of this syscall, and that shounds like gibberish to me :) Feel free to send a patch to improve the documentation for csky. Cheers, Alex > > > On Tue, Nov 24, 2020 at 5:51 PM Michael Kerrisk (man-pa

Re: [PATCH v5 0/4] man2: udpate mm/userfaultfd manpages to latest

2021-04-01 Thread Alejandro Colomar (man-pages)
tfd.2: Add UFFD_FEATURE_THREAD_ID docs ioctl_userfaultfd.2: Add write-protect mode docs I applied all 4 patches (with a few minor fixes to 1/4 and 4/4 (cosmetic fixes; some of them about the 80-col right margin)): <https://github.com/alejandro-colomar/man-pages/tree/eb8f2001d493d458d0

Re: [PATCH v4 4/4] ioctl_userfaultfd.2: Add write-protect mode docs

2021-03-29 Thread Alejandro Colomar (man-pages)
Hi Peter, On 3/29/21 11:51 PM, Peter Xu wrote: > On Thu, Mar 25, 2021 at 10:32:20PM +0100, Alejandro Colomar (man-pages) wrote: >>>>> +.TP >>>>> +.B ENOENT >>>>> +The range specified in >>>>> +.I range >>>>> +is not

Re: [PATCH] mremap.2: MREMAP_DONTUNMAP to reflect to supported mappings

2021-03-25 Thread Alejandro Colomar (man-pages)
UNMAP was specified and -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/

Re: [PATCH v4 4/4] ioctl_userfaultfd.2: Add write-protect mode docs

2021-03-25 Thread Alejandro Colomar (man-pages)
Hi Peter, On 3/23/21 8:16 PM, Peter Xu wrote: On Tue, Mar 23, 2021 at 07:11:04PM +0100, Alejandro Colomar (man-pages) wrote: +.TP +.B UFFDIO_COPY_MODE_WP +Copy the page with read-only permission. +This allows the user to trap the next write to the page, +which will block and generate another

Re: [PATCH v4 2/4] userfaultfd.2: Add write-protect mode

2021-03-23 Thread Alejandro Colomar (man-pages)
yet supported. +.TP +.B UFFD_PAGEFAULT_FLAG_WP +If the address is in a range that was registered with the +.B UFFDIO_REGISTER_MODE_WP +flag, when this bit is set it means it's a write-protect fault. +Otherwise it's a page missing fault. .RE .TP .I pagefault.feat.pid -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/

Re: [PATCH v4 4/4] ioctl_userfaultfd.2: Add write-protect mode docs

2021-03-23 Thread Alejandro Colomar (man-pages)
ual address does not exist, +or not registered with userfaultfd write-protect mode. +.TP +.B EFAULT +Encountered a generic fault during processing. What is a "generic fault"? .SH RETURN VALUE See descriptions of the individual operations, above. .SH ERRORS -- Alejandro Colo

Re: [PATCH v3 4/4] ioctl_userfaultfd.2: Add write-protect mode docs

2021-03-19 Thread Alejandro Colomar (man-pages)
io_range > +structure was not a multiple of the system page size; or > +.I len > +was zero; or the specified range was otherwise invalid. > +.TP > +.B EAGAIN > +The process was interrupted and need to retry. > +.TP > +.B ENOENT > +The range specified in > +.I range > +i

Re: [PATCH v3 2/4] userfaultfd.2: Add write-protect mode

2021-03-19 Thread Alejandro Colomar (man-pages)
structure > Each > .BR read (2) > @@ -364,8 +459,12 @@ flag (see > .BR ioctl_userfaultfd (2)) > and this flag is set, this a write fault; > otherwise it is a read fault. > -.\" > -.\" UFFD_PAGEFAULT_FLAG_WP is not yet supported. > +.TP > +.B UFFD_PAGEFAULT_FLAG_WP > +If the address is in a range that was registered with the > +.B UFFDIO_REGISTER_MODE_WP > +flag, when this bit is set it means it's a write-protect fault. Otherwise > it's > +a page missing fault. Break at the point. > .RE > .TP > .I pagefault.feat.pid > -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/

Re: AW: [RFC v3 04/17] arch_prctl.2: SYNOPSIS: Remove unused includes

2021-03-16 Thread Alejandro Colomar (man-pages)
@debian:/usr/include$ At least on my system, no header seems to be including . Thanks, Alex -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/

[RFC v3 17/17] ioprio_set.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/ioprio_set.2 | 14 ++ 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/man2/ioprio_set.2 b/man2/ioprio_set.2 index 91ec03f3b..f0c914ab0 100644 --- a/man2/ioprio_set.2 +++ b/man2/ioprio_set.2 @@ -26,12 +26,13 @@ ioprio_get

[RFC v3 16/17] init_module.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/init_module.2 | 21 - 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/man2/init_module.2 b/man2/init_module.2 index 31229ea93..9bc2080a3 100644 --- a/man2/init_module.2 +++ b/man2/init_module.2 @@ -29,14 +29,22

[RFC v3 14/17] get_robust_list.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Also remove unused includes. Signed-off-by: Alejandro Colomar --- man2/get_robust_list.2 | 20 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/man2/get_robust_list.2 b/man2/get_robust_list.2 index b1ae42dbd..9c8f14443 100644 --- a/man2/get_robust_list.2 +++ b

[RFC v3 13/17] getunwind.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/getunwind.2 | 14 -- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/man2/getunwind.2 b/man2/getunwind.2 index 9a58f43e4..3490a0617 100644 --- a/man2/getunwind.2 +++ b/man2/getunwind.2 @@ -29,16 +29,14 @@ getunwind \- copy the

[RFC v3 09/17] execveat.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/execveat.2 | 13 - 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/man2/execveat.2 b/man2/execveat.2 index 499bf1b57..0d23cb39b 100644 --- a/man2/execveat.2 +++ b/man2/execveat.2 @@ -28,15 +28,13 @@ execveat \- execute program

[RFC v3 10/17] exit_group.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/exit_group.2 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/man2/exit_group.2 b/man2/exit_group.2 index d26ec8c70..5bf207bd3 100644 --- a/man2/exit_group.2 +++ b/man2/exit_group.2 @@ -27,9 +27,10 @@ exit_group \- exit all

[RFC v3 12/17] getdents.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/getdents.2 | 12 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/man2/getdents.2 b/man2/getdents.2 index ba41e0be8..7d5b0e01c 100644 --- a/man2/getdents.2 +++ b/man2/getdents.2 @@ -33,7 +33,11 @@ getdents, getdents64 \- get

[RFC v3 11/17] futex.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
outdated in the future. Signed-off-by: Alejandro Colomar --- man2/futex.2 | 19 +++ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/man2/futex.2 b/man2/futex.2 index e698178d2..a2486628b 100644 --- a/man2/futex.2 +++ b/man2/futex.2 @@ -25,18 +25,16 @@ futex \- fast use

[RFC v3 08/17] epoll_wait.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/epoll_wait.2 | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/man2/epoll_wait.2 b/man2/epoll_wait.2 index af4180df0..0f3cfe1d5 100644 --- a/man2/epoll_wait.2 +++ b/man2/epoll_wait.2 @@ -32,7 +32,13 @@ epoll_wait, epoll_pwait

[RFC v3 04/17] arch_prctl.2: SYNOPSIS: Remove unused includes

2021-03-13 Thread Alejandro Colomar
AFAICS, there's no reason to include that. All of the macros that this function uses are already defined in the other headers. Cc: glibc Signed-off-by: Alejandro Colomar --- man2/arch_prctl.2 | 1 - 1 file changed, 1 deletion(-) diff --git a/man2/arch_prctl.2 b/man2/arch_prctl.2

[RFC v3 06/17] clone.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/clone.2 | 16 +--- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/man2/clone.2 b/man2/clone.2 index 11eb6c622..2f5ecac42 100644 --- a/man2/clone.2 +++ b/man2/clone.2 @@ -56,13 +56,12 @@ clone, __clone2, clone3 \- create a

[RFC v3 07/17] delete_module.2: wfix

2021-03-13 Thread Alejandro Colomar
Use the same wording as in delete_module(2) for this special case. Signed-off-by: Alejandro Colomar --- man2/delete_module.2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man2/delete_module.2 b/man2/delete_module.2 index cb78cf484..50921d7ba 100644 --- a/man2/delete_module

[RFC v3 01/17] access.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/access.2 | 11 --- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/man2/access.2 b/man2/access.2 index 77ff2bd99..b662d07cf 100644 --- a/man2/access.2 +++ b/man2/access.2 @@ -49,15 +49,20 @@ access, faccessat, faccessat2 \- check

[RFC v3 05/17] capget.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/capget.2 | 18 -- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/man2/capget.2 b/man2/capget.2 index ea504c28c..981645f90 100644 --- a/man2/capget.2 +++ b/man2/capget.2 @@ -18,14 +18,15 @@ capget, capset \- set/get

[RFC v3 02/17] alloc_hugepages.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/alloc_hugepages.2 | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/man2/alloc_hugepages.2 b/man2/alloc_hugepages.2 index 623eeab6e..a3a157725 100644 --- a/man2/alloc_hugepages.2 +++ b/man2/alloc_hugepages.2 @@ -27,11 +27,12

[RFC v3 03/17] arch_prctl.2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- man2/arch_prctl.2 | 14 +- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/man2/arch_prctl.2 b/man2/arch_prctl.2 index f9a9dc39d..8706cd1ec 100644 --- a/man2/arch_prctl.2 +++ b/man2/arch_prctl.2 @@ -27,15 +27,14 @@ arch_prctl \- set

[RFC v3 00/17] man2: Use syscall(SYS_...); for system calls without a wrapper

2021-03-13 Thread Alejandro Colomar
Hi Michael, This draft is more polished than my inital idea. I changed only those functions without a wrapper. If we decide later to do something different, we'll see. Any thoughts? Cheers, Alex P.S.: [RFC v3 15/17] doesn't exist :) Alejandro Colomar (17): access.2: Use sy

Re: [PATCH v2 2/4] userfaultfd.2: Add write-protect mode

2021-03-10 Thread Alejandro Colomar (man-pages)
FLAG_WP +If the address is in a range that was registered with the +.B UFFDIO_REGISTER_MODE_WP +flag, when this bit is set it means it's a write-protect fault. Otherwise it's +a page missing fault. .RE .TP .I pagefault.feat.pid -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/

Re: [RFC v4] copy_file_range.2: Update cross-filesystem support for 5.12

2021-03-04 Thread Alejandro Colomar (man-pages)
Hi Darrick, On 3/4/21 6:13 PM, Darrick J. Wong wrote: On Thu, Mar 04, 2021 at 10:38:07AM +0100, Alejandro Colomar wrote: +However, on some virtual filesystems, +the call failed to copy, while still reporting success. ...success, or merely a short copy? Okay. (The rest looks reasonable

Re: [PATCH 1/4] userfaultfd.2: Add UFFD_FEATURE_THREAD_ID docs

2021-03-04 Thread Alejandro Colomar (man-pages)
Hi Peter, On 3/4/21 4:50 PM, Peter Xu wrote: On Thu, Mar 04, 2021 at 10:22:18AM +0100, Alejandro Colomar (man-pages) wrote: +.BR UFFD_FEATURE_THREAD_ID This should use [.B] and not [.BR]. .BR is for alternate Bold and Roman. .B is for bold. (There are more appearances of this in the other

[RFC v4] copy_file_range.2: Update cross-filesystem support for 5.12

2021-03-04 Thread Alejandro Colomar
Luis Lozano Cc: Andreas Dilger Cc: Olga Kornievskaia Cc: Christoph Hellwig Cc: ceph-devel Cc: linux-kernel Cc: CIFS Cc: samba-technical Cc: linux-fsdevel Cc: Linux NFS Mailing List Cc: Walter Harms Signed-off-by: Alejandro Colomar --- v3: - Don't remove some important t

Re: [PATCH 1/4] userfaultfd.2: Add UFFD_FEATURE_THREAD_ID docs

2021-03-04 Thread Alejandro Colomar (man-pages)
this in the other patches.) Thanks, Alex -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/

Re: [PATCH] mount_setattr.2: New manual page documenting the mount_setattr() system call

2021-03-01 Thread Alejandro Colomar (man-pages)
s; +} +ret = mount_setattr(fd_tree, "", +AT_EMPTY_PATH | (recursive ? AT_RECURSIVE : 0), +attr, sizeof(struct mount_attr)); +if (ret < 0) +exit_log("%m - Failed to change mount attributes\n"); +close(fd_userns); + +ret = move_mount(fd_tree, "", -EBADF, target, MOVE_MOUNT_F_EMPTY_PATH); +if (ret < 0) +exit_log("%m - Failed to attach mount to %s\n", target); +close(fd_tree); + +exit(EXIT_SUCCESS); +} +.fi .EE +.SH SEE ALSO +.BR capabilities (7), +.BR clone (2), +.BR clone3 (2), +.BR ext4 (5), +.BR mount (2), +.BR mount_namespaces (7), +.BR newuidmap (1), +.BR newgidmap (1), +.BR proc (5), +.BR unshare (2), +.BR user_namespaces (7), +.BR xattr (7), +.BR xfs (5) base-commit: 64b8654d8bcac58cae635690f624e2b332736425 -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/

[RFC v3] copy_file_range.2: Update cross-filesystem support for 5.12

2021-03-01 Thread Alejandro Colomar
Luis Lozano Cc: Andreas Dilger Cc: Olga Kornievskaia Cc: Christoph Hellwig Cc: ceph-devel Cc: linux-kernel Cc: CIFS Cc: samba-technical Cc: linux-fsdevel Cc: Linux NFS Mailing List Cc: Walter Harms Signed-off-by: Alejandro Colomar --- v3: - Don't remove some important t

[RFC v2] copy_file_range.2: Update cross-filesystem support for 5.12

2021-02-27 Thread Alejandro Colomar
Luis Lozano Cc: Andreas Dilger Cc: Olga Kornievskaia Cc: Christoph Hellwig Cc: ceph-devel Cc: linux-kernel Cc: CIFS Cc: samba-technical Cc: linux-fsdevel Cc: Linux NFS Mailing List Cc: Walter Harms Signed-off-by: Alejandro Colomar --- Hi all, Please check that this is correct.

Re: [PATCH] copy_file_range.2: Kernel v5.12 updates

2021-02-27 Thread Alejandro Colomar (man-pages)
Hi Amir, On 2/27/21 6:41 AM, Amir Goldstein wrote: On Sat, Feb 27, 2021 at 12:19 AM Alejandro Colomar (man-pages) On 2/24/21 5:10 PM, Amir Goldstein wrote: On Wed, Feb 24, 2021 at 4:22 PM Luis Henriques wrote: .TP +.B EOPNOTSUPP I'll add the kernel version here: .BR EOPNO

Re: [PATCH] copy_file_range.2: Kernel v5.12 updates

2021-02-26 Thread Alejandro Colomar (man-pages)
If it were me, I would provide all the details of the situation to Michael and ask him to write the best description for this section. I'll look into more detail at this part in a later review. On 2/26/21 11:34 AM, Amir Goldstein wrote: > Is this detailed enough? ;-) > > https:/

Re: [PATCH] copy_file_range.2: Kernel v5.12 updates

2021-02-26 Thread Alejandro Colomar (man-pages)
ssages to project mailing lists, and blog entries are all appropriate. As long as people do not use subscriber links as a way to defeat our attempts to gain subscribers, we are happy to see them shared. ]] <https://lwn.net/op/FAQ.lwn#site> Cheers, Alex -- Alejandro Colomar Linu

Re: [RFC v2] execve.2: SYNOPSIS: Document both glibc wrapper and kernel sycalls

2021-02-26 Thread Alejandro Colomar (man-pages)
ument syscalls without wrappers as syscall(SYS_ ...). We could already start with this. (Actually, after I finish fixing the prototypes in man3.) This change will be fast, because there aren't many of these. 2) Do the rest, I don't know yet how. We'll see. Thanks,

Re: [PATCH] copy_file_range.2: Kernel v5.12 updates

2021-02-26 Thread Alejandro Colomar (man-pages)
ubscribers only. Reader subscriptions are a necessary way to fund the continued existence of LWN and the quality of its content. [...] (Alternatively, this item will become freely available on March 4, 2021) ] However, the 4th of March is close enough, i guess. Thanks, Alex -- Alejandro Colomar

Re: [PATCH] copy_file_range.2: Kernel v5.12 updates

2021-02-26 Thread Alejandro Colomar (man-pages)
ou be OK handling this yourself as Amir suggested? Could you please provide a more detailed history of what is to be documented? Thanks, Alex -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/

Re: [RFC v2] execve.2: SYNOPSIS: Document both glibc wrapper and kernel sycalls

2021-02-19 Thread Alejandro Colomar (man-pages)
Hi Michael, On 2/19/21 1:39 PM, Michael Kerrisk (man-pages) wrote: Hey Alex, On 2/18/21 4:13 PM, Alejandro Colomar wrote: Until now, the manual pages have (usually) documented only either the glibc (or another library) wrapper for a syscall, or the kernel syscall (this only when there's

[RFC v2] execve.2: SYNOPSIS: Document both glibc wrapper and kernel sycalls

2021-02-18 Thread Alejandro Colomar
blem where documenting glibc wrappers implied shadowing the documentation for the raw syscall. Signed-off-by: Alejandro Colomar --- man2/execve.2 | 15 +-- man2/membarrier.2 | 14 +- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/man2/execve.2 b/man2/exec

Re: [RFC] execve.2: SYNOPSIS: Document both glibc wrapper and kernel sycalls

2021-02-18 Thread Alejandro Colomar (man-pages)
Hi Micahel, On 2/18/21 1:27 PM, Michael Kerrisk (man-pages) wrote: Hi Alex, On 2/14/21 2:39 PM, Alejandro Colomar wrote: Until now, the manual pages have (usually) documented only either the glibc (or another library) wrapper for a syscall, or the raw syscall (this only when there's

[RFC] execve.2: SYNOPSIS: Document both glibc wrapper and kernel sycalls

2021-02-14 Thread Alejandro Colomar
o see that info. Signed-off-by: Alejandro Colomar --- Hi all, This is a prototype for doing some important changes to the SYNOPSIS of the man-pages. The commit message above explains the idea quite well. A few details that couldn't be shown on this commit are: For cases where the wrapper i

[PATCH v2] ipc.2: Fix prototype parameter types

2021-02-07 Thread Alejandro Colomar
$' \ |sort -V \ |xargs pcregrep -Mn "(?s)^asmlinkage\s+[\w\s]+\**sys_${1}\s*\(.*?\)" \ |sed -E 's/^[^:]+:[0-9]+:/&\n/'; } Signed-off-by: Alejandro Colomar --- man2/ipc.2 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/

Re: outb.2: What to do with prototypes?

2021-02-04 Thread Alejandro Colomar (man-pages)
On 2/4/21 1:59 PM, Alejandro Colomar (man-pages) wrote: > Hi Michael, > > What would you do with the prototypes in outb.2? > They are different in glibc and the kernel. > However, since these are functions to be called mostly withing the > kernel, the kernel prototype is more

[PATCH] mmap2.2: Fix prototype parameter types

2021-02-04 Thread Alejandro Colomar
p '\.[ch]$' \ |sort -V \ |xargs pcregrep -Mn "(?s)^asmlinkage\s+[\w\s]+\**sys_${1}\s*\(.*?\)" \ |sed -E 's/^[^:]+:[0-9]+:/&\n/'; } Signed-off-by: Alejandro Colomar --- man2/mmap2.2 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions

[PATCH] ipc.2: Fix prototype parameter types

2021-02-04 Thread Alejandro Colomar
uot;(?s)^\w*SYSCALL_DEFINE.\(${1},.*?\)" \ |sed -E 's/^[^:]+:[0-9]+:/&\n/'; find * -type f \ |grep '\.[ch]$' \ |sort -V \ |xargs pcregrep -Mn "(?s)^asmlinkage\s+[\w\s]+\**sys_${1}\s*\(.*?\)" \ |sed -E 's/^[

[tip: locking/core] futex: Change utime parameter to be 'const ... *'

2021-01-28 Thread tip-bot2 for Alejandro Colomar
The following commit has been merged into the locking/core branch of tip: Commit-ID: 1ce53e2c2ac069e7b3c400a427002a70deb4a916 Gitweb: https://git.kernel.org/tip/1ce53e2c2ac069e7b3c400a427002a70deb4a916 Author:Alejandro Colomar AuthorDate:Sat, 28 Nov 2020 13:39:46 +01:00

[tip: locking/core] futex: Change utime parameter to be 'const ... *'

2021-01-27 Thread tip-bot2 for Alejandro Colomar
The following commit has been merged into the locking/core branch of tip: Commit-ID: 3018a0840135536817507dd14c2a7c4ffa69 Gitweb: https://git.kernel.org/tip/3018a0840135536817507dd14c2a7c4ffa69 Author:Alejandro Colomar AuthorDate:Sat, 28 Nov 2020 13:39:46 +01:00

Re: [PATCH -V9 2/3] NOT kernel/man2/set_mempolicy.2: Add mode flag MPOL_F_NUMA_BALANCING

2021-01-21 Thread Alejandro Colomar (man-pages)
Hi Huang Ying, On 1/20/21 7:12 AM, Huang Ying wrote: > Signed-off-by: "Huang, Ying" > Cc: "Alejandro Colomar" Sorry, for the confusion. I have a different email for reading lists. I use alx.manpages@ for everything, and alx.mailinglists@ just for reading lists, bu

Ping: [PATCH] futex: Change 'utime' parameter to be 'const ... *'

2021-01-17 Thread Alejandro Colomar (man-pages)
Ping! On 12/10/20 6:36 PM, Alejandro Colomar (man-pages) wrote: > Hi Thomas & Ingo, > > I tested the changes. Everything's OK. > > Cheers, > > Alex > > $ uname -a > Linux debian 5.10.0-rc7+alx3+ #4 SMP Thu Dec 10 18:05:03 CET 2020 x86_64 > GNU/Li

Re: [PATCH] getcpu.2: Document glibc wrapper instead of kernel syscall

2021-01-02 Thread Alejandro Colomar (man-pages)
On 1/2/21 9:41 AM, Michael Kerrisk (man-pages) wrote: > Hi Alex, > > On 12/30/20 10:41 PM, Alejandro Colomar wrote: >> The glibc wrapper doesn't provide the third argument. >> Simplify the info about the (unused) kernel parameter >> to the minimum that is useful

[PATCH] getcpu.2: Document glibc wrapper instead of kernel syscall

2020-12-30 Thread Alejandro Colomar
#x27;int'; $ find glibc/ -type f -name '*.h' \ |xargs pcregrep -Mn "(?s)^[\w\s]*${ret}\s*${syscall}\s*\(.*?;"; glibc/sysdeps/unix/sysv/linux/bits/sched.h:92: extern int getcpu (unsigned int *, unsigned int *) __THROW; Signed-of

Re: [PATCH v3] close_range.2: new page documenting close_range(2)

2020-12-21 Thread Alejandro Colomar (man-pages)
Hi Stephen, On 12/21/20 8:24 PM, Stephen Kitt wrote: > Hi Alex, > > On Sat, 19 Dec 2020 15:00:00 +0100, "Alejandro Colomar (man-pages)" > wrote: >> On 12/18/20 5:58 PM, Stephen Kitt wrote: > [...] >>> +This program executes the command given on its c

Re: [PATCH v3] close_range.2: new page documenting close_range(2)

2020-12-21 Thread Alejandro Colomar (man-pages)
On 12/20/20 11:00 PM, Stephen Kitt wrote: > Hi Alex, > > On Sat, 19 Dec 2020 15:00:00 +0100, "Alejandro Colomar (man-pages)" > wrote: >> Please see some comments below. >> It's looking good ;) > > Thanks for your review and patience! > >

Re: [PATCH v3] close_range.2: new page documenting close_range(2)

2020-12-19 Thread Alejandro Colomar (man-pages)
+fprintf(stderr, "Usage: %s \n", > argv[0]); s/\\/\\e/ > +exit(EXIT_FAILURE); > +} > + > +for (i = 2; i < argc; i++) { for (int i = 2; i < argc; i++) { > +if (open(argv[i], O_RDONLY) == -1) { > +perror(argv[i]); > +exit(EXIT_FAILURE); > +} > +} > + > +if (syscall(__NR_close_range, 3, ~0U, CLOSE_RANGE_UNSHARE) == -1) { > +perror("close_range"); > +exit(EXIT_FAILURE); > +} > + > +execve(argv[1], newargv, newenviron); > +perror("execve"); > +exit(EXIT_FAILURE); > +} > +.EE > +.in > +.PP > +We can use the second program to exec the first as follows: > +.PP > +.in +4n > +.EX > +.RB "$" " make listopen close_range" > +.RB "$" " ./close_range ./listopen /dev/null /dev/zero" > +FD 0 is open. > +FD 1 is open. > +FD 2 is open. > +.EE > +.in > +.PP > +Removing the call to > +.B close_range .BR close_range () > +will show different output, with the file descriptors for the named > +files still open. [ will show different output, with the file descriptors for the named files still open. ] > +.SH SEE ALSO > +.BR close (2) > > base-commit: b5dae3959625f5ff378e9edf9139057d1c06bb55 > -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/

Re: [PATCH -V6 RESEND 2/3] NOT kernel/man-pages: man2/set_mempolicy.2: Add mode flag MPOL_F_NUMA_BALANCING

2020-12-18 Thread Alejandro Colomar (mailing lists; readonly)
lex On 12/8/20 9:13 AM, Huang, Ying wrote: > Hi, Alex, > > Sorry for late, I just notice this email today. > > "Alejandro Colomar (mailing lists; readonly)" > writes: > >> Hi Huang Ying, >> >> Please see a few fixes below. >> >&g

Ping: [patch] close_range.2: new page documenting close_range(2)

2020-12-18 Thread Alejandro Colomar (man-pages)
Hi Stephen, Linux 5.10 has been recently released. Do you have any updates for this patch? Thanks, Alex On 12/12/20 6:58 PM, Alejandro Colomar (man-pages) wrote: > Hi Christian, > > Makes sense to me. > > Thanks, > > Alex > > On 12/12/20 1:14 PM, Christian Braun

Re: [Bug 210655] ptrace.2: documentation is incorrect about access checking threads in same thread group

2020-12-16 Thread Alejandro Colomar (man-pages)
[CC += Thomas, Ingo, Peter, Darren] Hi Oleg, On 12/16/20 3:33 AM, Jann Horn wrote: > On Wed, Dec 16, 2020 at 3:21 AM Ted Estes wrote: >> On 12/15/2020 6:01 PM, Jann Horn wrote: >>> On Wed, Dec 16, 2020 at 12:25 AM Alejandro Colomar (man-pages) >>> wrote: >>&

Re: [Bug 210655] ptrace.2: documentation is incorrect about access checking threads in same thread group

2020-12-15 Thread Alejandro Colomar (man-pages)
Hi Jann, On 12/16/20 12:07 AM, Jann Horn wrote: > Am Tue, Dec 15, 2020 at 06:01:25PM +0100 schrieb Alejandro Colomar > (man-pages): >> Hi, >> >> There's a bug report: https://bugzilla.kernel.org/show_bug.cgi?id=210655 >> >> [[ >> Under "Pt

Re: [Bug 210655] ptrace.2: documentation is incorrect about access checking threads in same thread group

2020-12-15 Thread Alejandro Colomar (man-pages)
On 12/16/20 12:23 AM, Alejandro Colomar (man-pages) wrote: > Hi Jann, > > On 12/16/20 12:07 AM, Jann Horn wrote: >> Am Tue, Dec 15, 2020 at 06:01:25PM +0100 schrieb Alejandro Colomar >> (man-pages): >>> Hi, >>> >>> There's a bug repor

Re: [Bug 210655] ptrace.2: documentation is incorrect about access checking threads in same thread group

2020-12-15 Thread Alejandro Colomar (man-pages)
[CC += Andreas, Linus, Roland, Markus; fixed Oleg] On 12/15/20 7:34 PM, Alejandro Colomar (man-pages) wrote: > Hi Ted, > > On 12/15/20 7:31 PM, Ted Estes wrote: >> Per my research on the topic, the error is in the manual page. The >> behavior of ptrace(2) was intentionall

Re: [Bug 210655] ptrace.2: documentation is incorrect about access checking threads in same thread group

2020-12-15 Thread Alejandro Colomar (man-pages)
> > I found this email thread on the subject: > https://lkml.org/lkml/2006/8/31/241 Thank you for all the details and links! I'll fix the page. Thanks, Alex > > Thank you. > --Ted Estes > > On 12/15/2020 11:01 AM, Alejandro Colomar (man-pages) wrote:

[Bug 210655] ptrace.2: documentation is incorrect about access checking threads in same thread group

2020-12-15 Thread Alejandro Colomar (man-pages)
A thread may never attach to another in the same group. Reference, ptrace_attach() https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/kernel/ptrace.c?h=v5.9.14#n380 ]] I just wanted to make sure that it is a bug in the manual page, and not in the implementation. Thanks, Al

Re: [patch] close_range.2: new page documenting close_range(2)

2020-12-12 Thread Alejandro Colomar (man-pages)
Hi Christian, Makes sense to me. Thanks, Alex On 12/12/20 1:14 PM, Christian Brauner wrote: > On Thu, Dec 10, 2020 at 03:36:42PM +0100, Alejandro Colomar (man-pages) wrote: >> Hi Christian, > > Hi Alex, > >> >> Thanks for confirming that behavior. Seems rea

Re: [PATCH] futex: Change 'utime' parameter to be 'const ... *'

2020-12-10 Thread Alejandro Colomar (man-pages)
n 13 1..1 # futex_wait_private_mapped_file: Test the futex value of private file mappings in FUTEX_WAIT ok 1 futex-wait-private-mapped-file # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0 On 11/28/20 1:39 PM, Alejandro Colomar wrote: > futex(2) says that 'utime' is a pointer to 'const'.

Re: [patch] close_range.2: new page documenting close_range(2)

2020-12-10 Thread Alejandro Colomar (man-pages)
these errors are not normally reported against the first write which exceeds the available storage space, but instead against a subsequent write(2), fsync(2), or close(). Thanks, Alex On 12/9/20 11:56 AM, Christian Brauner wrote: > On Wed, Dec 09,

Re: [PATCH v2] close_range.2: new page documenting close_range(2)

2020-12-09 Thread Alejandro Colomar (man-pages)
> +.SS Closing file descriptors before exec > +File descriptors can be closed safely using > +.PP > +.in +4n > +.EX > +/* we don't want anything past stderr here */ > +close_range(3, ~0U, CLOSE_RANGE_UNSHARE); > +execve(); > +.EE > +.in > +.SS Closing all open file descriptors > +To avoid blindly closing file descriptors in the range of possible > +file descriptors, this is sometimes implemented (on Linux) by listing > +open file descriptors in > +.I /proc/self/fd/ > +and calling > +.BR close (2) > +on each one. > +.BR close_range () > +can take care of this without requiring > +.I /proc > +and with a single system call, which provides significant performance > +benefits. > +.SH SEE ALSO > +.BR close (2) > > base-commit: b5dae3959625f5ff378e9edf9139057d1c06bb55 > -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es

Re: [patch] close_range.2: new page documenting close_range(2)

2020-12-09 Thread Alejandro Colomar (man-pages)
ange(3, ~0U); AFAICS after reading the code, if the unsharing fails, it will not close any file descriptors (please correct me if I'm wrong). Just wanted to be sure that it was the intended behavior with you, and if so, it would be good to document it in the page. > - Whenever the re

Re: [patch] close_range.2: new page documenting close_range(2)

2020-12-09 Thread Alejandro Colomar (man-pages)
> >> +.SS Closing all open file descriptors >> +This is commonly implemented (on Linux) by listing open file > > Is it really true that this is common? I suspect not. It's slow, and > relies on /proc being present. I would have thought that more common > is some

Re: [PATCH -V7 2/3] NOT kernel/man2/set_mempolicy.2: Add mode flag MPOL_F_NUMA_BALANCING

2020-12-04 Thread Alejandro Colomar (man-pages)
Hi Huang Ying, Please, see a few fixes below. Thanks, Alex On 12/4/20 10:15 AM, Huang Ying wrote: > Signed-off-by: "Huang, Ying" > --- > man2/set_mempolicy.2 | 14 ++ > 1 file changed, 14 insertions(+) > > diff --git a/man2/set_mempolicy.2 b/man2/set_mempolicy.2 > index 68011eecb

Re: [PATCH -V6 RESEND 2/3] NOT kernel/man-pages: man2/set_mempolicy.2: Add mode flag MPOL_F_NUMA_BALANCING

2020-12-02 Thread Alejandro Colomar (mailing lists; readonly)
Hi Huang Ying, Please see a few fixes below. Michael, as always, some question for you too ;) Thanks, Alex On 12/2/20 9:42 AM, Huang Ying wrote: > Signed-off-by: "Huang, Ying" > --- > man2/set_mempolicy.2 | 9 + > 1 file changed, 9 insertions(+) > > diff --git a/man2/set_mempolicy.2

[PATCH] futex: Change 'utime' parameter to be 'const ... *'

2020-11-28 Thread Alejandro Colomar
return do_futex(uaddr, op, val, tp, uaddr2, val2, val3); } $ sed -n '/get_timespec64(/,/;/p' linux/include/linux/time.h int get_timespec64(struct timespec64 *ts, const struct __kernel_timespec __user *uts); ... Signed-off-by: Alejandro Colomar --- Hello Thomas & Ingo, I'm s

[PATCH] subpage_prot.2: SYNOPSIS: Fix return type: s/long/int/

2020-11-27 Thread Alejandro Colomar
age_prot.c \ |grep '\'; int err; err = -ENOMEM; err = -ENOMEM; err = 0; return err; Signed-off-by: Alejandro Colomar --- man2/subpage_prot.2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man2/subpag

Re: [PATCH] spu_create.2: Clarify that one of the prototypes is the current one

2020-11-27 Thread Alejandro Colomar (man-pages)
Hi Michael, On 11/27/20 11:43 AM, Michael Kerrisk (man-pages) wrote: > Hi ALex, > > On 11/26/20 7:32 PM, Alejandro Colomar wrote: >> The current Linux kernel only provides a definition of 'spu_create()'. >> It has 4 parameters, the last being 'int neighbor_f

[PATCH] spu_create.2: Clarify that one of the prototypes is the current one

2020-11-26 Thread Alejandro Colomar
e long sys_spu_create(const char __user *name, 67207b9664a8d (Arnd Bergmann 2005-11-15 15:53:48 -0500 37) unsigned int flags, mode_t mode) $ git describe --contains 8e68e2f248332 v2.6.23-rc1~195^2~7 Signed-off-by: Alejandro Colomar --- man2/spu_create.2 | 16 +--- 1 file ch

Re: set_thread_area.2: csky architecture undocumented

2020-11-26 Thread Alejandro Colomar (mailing lists; readonly)
> > reg->tls = addr; > ti->tp_value = addr; > > return 0; > } > > Any comments are welcome :) > > > On Tue, Nov 24, 2020 at 5:51 PM Michael Kerrisk (man-pages) > wrote: >> >> Hi Alex, >> >> On 11/23/20 10:31

Re: set_thread_area.2: csky architecture undocumented

2020-11-26 Thread Alejandro Colomar (mailing lists; readonly)
HI Michael, On 11/24/20 10:51 AM, Michael Kerrisk (man-pages) wrote: > Hi Alex, > > On 11/23/20 10:31 PM, Alejandro Colomar (man-pages) wrote: >> Hi Michael, >> >> SYNOPSIS >>#include >> >>#if defined __i386__ || defined __x

[PATCH] set_tid_address.2: SYNOPSIS: Fix set_tid_address() return type

2020-11-23 Thread Alejandro Colomar
k_pid_vnr(current); } $ grep -rn 'task_pid_vnr(struct' linux/ linux/include/linux/sched.h:1374: static inline pid_t task_pid_vnr(struct task_struct *tsk) Signed-off-by: Alejandro Colomar --- man2/set_tid_address.2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man2/set_t

set_thread_area.2: csky architecture undocumented

2020-11-23 Thread Alejandro Colomar (man-pages)
Hi Michael, SYNOPSIS #include #if defined __i386__ || defined __x86_64__ # include int get_thread_area(struct user_desc *u_info); int set_thread_area(struct user_desc *u_info); #elif defined __m68k__ int get_thread_area(void); int set_t

[PATCH] restart_syscall.2: SYNOPSIS: Fix restart_syscall() return type

2020-11-23 Thread Alejandro Colomar
struct pollfd __user *ufds; int nfds; int has_timeout; unsigned long tv_sec; unsigned long tv_nsec; } poll; }; }; Signed-off-by: Alejandro Colomar --- ma

Re: [PATCH] lseek.2: SYNOPSIS: Use correct types

2020-11-22 Thread Alejandro Colomar (man-pages)
Hi Florian, On 11/22/20 1:43 PM, Florian Weimer wrote: > * Alejandro Colomar: > >> The Linux kernel uses 'unsigned int' instead of 'int' for 'fd' and >> 'whence'. As glibc provides no wrapper, use the same types the >> kernel uses

Re: [PATCH] lseek.2: SYNOPSIS: Use correct types

2020-11-21 Thread Alejandro Colomar (man-pages)
see in the patch). So if any other prototype needs to be updated, please do so. Especially, have a look at lseek64(3), which I suspect needs the same changes I propose in that patch. Thanks, Alex On 11/21/20 6:30 PM, Alejandro Colomar wrote: > The Linux kernel uses 'unsigned int' ins

[PATCH] lseek.2: SYNOPSIS: Use correct types

2020-11-21 Thread Alejandro Colomar
unsigned int, fd, unsigned int, offset_high, src/linux$ sed -n 322,325p fs/read_write.c SYSCALL_DEFINE3(lseek, unsigned int, fd, off_t, offset, unsigned int, whence) { return ksys_lseek(fd, offset, whence); } Signed-off-by: Alejandro Colomar --- man2/lseek.2 | 2 +- 1 file changed, 1 in

[PATCH 3/4] fs/attr.c, fs/bad_inode.c, fs/binfmt_aout.c, fs/binfmt_elf.c: Cosmetic

2020-11-21 Thread Alejandro Colomar
Slightly non-trivial changes: - Move declarations to the top of function definitions. - Split multiple assignments in a single line to multiple lines with a signle assignment each. Signed-off-by: Alejandro Colomar --- fs/attr.c| 5 ++--- fs/bad_inode.c | 5 +++-- fs/binfmt_aout.c

[PATCH 4/4] fs/binfmt_elf.c: Cosmetic

2020-11-21 Thread Alejandro Colomar
Non-trivial changes: Invert 'if's to simplify logic. Use 'goto' in conjunction with the above, when appropriate. Signed-off-by: Alejandro Colomar --- fs/binfmt_elf.c | 115 +--- 1 file changed, 59 insertions(+), 56 deletions

[PATCH 1/4] fs/anon_inodes.c: Use "%s" + __func__ instead of hardcoding function name

2020-11-21 Thread Alejandro Colomar
Signed-off-by: Alejandro Colomar --- fs/anon_inodes.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/anon_inodes.c b/fs/anon_inodes.c index 89714308c25b..7609d208bb53 100644 --- a/fs/anon_inodes.c +++ b/fs/anon_inodes.c @@ -152,11 +152,11 @@ static int __init

[PATCH 2/4] fs/anon_inodes.c, fs/attr.c, fs/bad_inode.c, fs/binfmt_aout.c, fs/binfmt_elf.c: Cosmetic

2020-11-21 Thread Alejandro Colomar
s (/* */), instead of C99 (//). Signed-off-by: Alejandro Colomar --- fs/anon_inodes.c | 1 + fs/attr.c| 7 +-- fs/bad_inode.c | 50 +- fs/binfmt_aout.c | 94 +- fs/binfmt_elf.c | 129 --- 5 file

  1   2   3   >