[PATCH] aio_suspend.3: SYNOPSIS: Use 'restrict' in prototypes

Subsystems: the rest

STALE2025d

5 messages, 2 authors, 2021-02-20 · open the first message on its own page

[PATCH] aio_suspend.3: SYNOPSIS: Use 'restrict' in prototypes

From: Alejandro Colomar <hidden>
Date: 2021-02-18 22:37:13

POSIX does NOT specify aio_suspend() to use 'restrict'.
However, glibc uses 'restrict'.
Users might be surprised by this!  Let's use it here too!

......

.../glibc$ grep_glibc_prototype aio_suspend
rt/aio.h:167:
extern int aio_suspend (const struct aiocb *const __list[], int __nent,
			const struct timespec *__restrict __timeout)
  __nonnull ((1));
.../glibc$

Cc: libc-alpha@sourceware.org
Cc: Ulrich Drepper <redacted>
Signed-off-by: Alejandro Colomar <redacted>
---

Hello Michael,

I sent this patch separately because it's a bit different,
and would like someone from glibc to check it.
I CCd Ulrich, who added 'restrict' to the function in glibc.

Thanks,

Alex

---
 man3/aio_suspend.3 | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/man3/aio_suspend.3 b/man3/aio_suspend.3
index 76a05f48e..dcae51e1c 100644
--- a/man3/aio_suspend.3
+++ b/man3/aio_suspend.3
@@ -31,7 +31,8 @@ aio_suspend \- wait for asynchronous I/O operation or timeout
 .B "#include <aio.h>"
 .PP
 .BI "int aio_suspend(const struct aiocb * const " aiocb_list [],
-.BI "                int " nitems ", const struct timespec *" timeout );
+.BI "                int " nitems \
+", const struct timespec *restrict " timeout );
 .PP
 Link with \fI\-lrt\fP.
 .fi
-- 
2.30.1.721.g45526154a5

Re: [PATCH] aio_suspend.3: SYNOPSIS: Use 'restrict' in prototypes

From: Michael Kerrisk (man-pages) <hidden>
Date: 2021-02-19 12:26:15

Hello Alex,

On 2/18/21 11:33 PM, Alejandro Colomar wrote:
POSIX does NOT specify aio_suspend() to use 'restrict'.
However, glibc uses 'restrict'.
Users might be surprised by this!  Let's use it here too!
Thanks for spotting this. Perhaps if we apply this,
the patch should include something in CONFORMING TO to
note that POSIX doesn't specify 'restrict'. What do 
you think?

Cheers,

Michael
quoted hunk
......

.../glibc$ grep_glibc_prototype aio_suspend
rt/aio.h:167:
extern int aio_suspend (const struct aiocb *const __list[], int __nent,
			const struct timespec *__restrict __timeout)
  __nonnull ((1));
.../glibc$

Cc: libc-alpha@sourceware.org
Cc: Ulrich Drepper <redacted>
Signed-off-by: Alejandro Colomar <redacted>
---

Hello Michael,

I sent this patch separately because it's a bit different,
and would like someone from glibc to check it.
I CCd Ulrich, who added 'restrict' to the function in glibc.

Thanks,

Alex

---
 man3/aio_suspend.3 | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/man3/aio_suspend.3 b/man3/aio_suspend.3
index 76a05f48e..dcae51e1c 100644
--- a/man3/aio_suspend.3
+++ b/man3/aio_suspend.3
@@ -31,7 +31,8 @@ aio_suspend \- wait for asynchronous I/O operation or timeout
 .B "#include <aio.h>"
 .PP
 .BI "int aio_suspend(const struct aiocb * const " aiocb_list [],
-.BI "                int " nitems ", const struct timespec *" timeout );
+.BI "                int " nitems \
+", const struct timespec *restrict " timeout );
 .PP
 Link with \fI\-lrt\fP.
 .fi

-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

Re: [PATCH] aio_suspend.3: SYNOPSIS: Use 'restrict' in prototypes

From: Alejandro Colomar (man-pages) <hidden>
Date: 2021-02-19 12:30:46


On 2/19/21 1:25 PM, Michael Kerrisk (man-pages) wrote:
Hello Alex,

On 2/18/21 11:33 PM, Alejandro Colomar wrote:
quoted
POSIX does NOT specify aio_suspend() to use 'restrict'.
However, glibc uses 'restrict'.
Users might be surprised by this!  Let's use it here too!
Thanks for spotting this. Perhaps if we apply this,
the patch should include something in CONFORMING TO to
note that POSIX doesn't specify 'restrict'. What do
you think?
Hi Michael,

I was about to ask exactly that in the email, but I forgot :)
Yes.

Cheers,

Alex
Cheers,

Michael
quoted
......

.../glibc$ grep_glibc_prototype aio_suspend
rt/aio.h:167:
extern int aio_suspend (const struct aiocb *const __list[], int __nent,
			const struct timespec *__restrict __timeout)
   __nonnull ((1));
.../glibc$

Cc: libc-alpha@sourceware.org
Cc: Ulrich Drepper <redacted>
Signed-off-by: Alejandro Colomar <redacted>
---

Hello Michael,

I sent this patch separately because it's a bit different,
and would like someone from glibc to check it.
I CCd Ulrich, who added 'restrict' to the function in glibc.

Thanks,

Alex

---
  man3/aio_suspend.3 | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/man3/aio_suspend.3 b/man3/aio_suspend.3
index 76a05f48e..dcae51e1c 100644
--- a/man3/aio_suspend.3
+++ b/man3/aio_suspend.3
@@ -31,7 +31,8 @@ aio_suspend \- wait for asynchronous I/O operation or timeout
  .B "#include <aio.h>"
  .PP
  .BI "int aio_suspend(const struct aiocb * const " aiocb_list [],
-.BI "                int " nitems ", const struct timespec *" timeout );
+.BI "                int " nitems \
+", const struct timespec *restrict " timeout );
  .PP
  Link with \fI\-lrt\fP.
  .fi
-- 
Alejandro Colomar
Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/
http://www.alejandro-colomar.es/

[PATCH v2] aio_suspend.3: SYNOPSIS: Use 'restrict' in prototypes

From: Alejandro Colomar <hidden>
Date: 2021-02-19 13:06:56

POSIX does NOT specify aio_suspend() to use 'restrict'.
However, glibc uses 'restrict'.
Users might be surprised by this!  Let's use it here too!

......

.../glibc$ grep_glibc_prototype aio_suspend
rt/aio.h:167:
extern int aio_suspend (const struct aiocb *const __list[], int __nent,
			const struct timespec *__restrict __timeout)
  __nonnull ((1));
.../glibc$

Cc: libc-alpha@sourceware.org
Cc: Ulrich Drepper <redacted>
Signed-off-by: Alejandro Colomar <redacted>
---

v2:
	- wsfix + srcfix: Avoid breaking the line in the prototype
	- Note the difference between POSIX and glibc in CONFORMING TO.

---
 man3/aio_suspend.3 | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/man3/aio_suspend.3 b/man3/aio_suspend.3
index 76a05f48e..e0355a449 100644
--- a/man3/aio_suspend.3
+++ b/man3/aio_suspend.3
@@ -30,8 +30,8 @@ aio_suspend \- wait for asynchronous I/O operation or timeout
 .PP
 .B "#include <aio.h>"
 .PP
-.BI "int aio_suspend(const struct aiocb * const " aiocb_list [],
-.BI "                int " nitems ", const struct timespec *" timeout );
+.BI "int aio_suspend(const struct aiocb *const " aiocb_list "[], int " nitems ,
+.BI "                const struct timespec *restrict " timeout );
 .PP
 Link with \fI\-lrt\fP.
 .fi
@@ -122,6 +122,10 @@ T}	Thread safety	MT-Safe
 .sp 1
 .SH CONFORMING TO
 POSIX.1-2001, POSIX.1-2008.
+.PP
+POSIX doesn't specify the parameters to be
+.IR restrict ;
+that is specific to glibc.
 .SH NOTES
 One can achieve polling by using a non-NULL
 .I timeout
-- 
2.30.1.721.g45526154a5

Re: [PATCH v2] aio_suspend.3: SYNOPSIS: Use 'restrict' in prototypes

From: Michael Kerrisk (man-pages) <hidden>
Date: 2021-02-20 14:37:26

On 2/19/21 2:03 PM, Alejandro Colomar wrote:
POSIX does NOT specify aio_suspend() to use 'restrict'.
However, glibc uses 'restrict'.
Users might be surprised by this!  Let's use it here too!
Hi Alex. 

Patch applied. Thanks!

Cheers,

Michael
quoted hunk
......

.../glibc$ grep_glibc_prototype aio_suspend
rt/aio.h:167:
extern int aio_suspend (const struct aiocb *const __list[], int __nent,
			const struct timespec *__restrict __timeout)
  __nonnull ((1));
.../glibc$

Cc: libc-alpha@sourceware.org
Cc: Ulrich Drepper <redacted>
Signed-off-by: Alejandro Colomar <redacted>
---

v2:
	- wsfix + srcfix: Avoid breaking the line in the prototype
	- Note the difference between POSIX and glibc in CONFORMING TO.

---
 man3/aio_suspend.3 | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/man3/aio_suspend.3 b/man3/aio_suspend.3
index 76a05f48e..e0355a449 100644
--- a/man3/aio_suspend.3
+++ b/man3/aio_suspend.3
@@ -30,8 +30,8 @@ aio_suspend \- wait for asynchronous I/O operation or timeout
 .PP
 .B "#include <aio.h>"
 .PP
-.BI "int aio_suspend(const struct aiocb * const " aiocb_list [],
-.BI "                int " nitems ", const struct timespec *" timeout );
+.BI "int aio_suspend(const struct aiocb *const " aiocb_list "[], int " nitems ,
+.BI "                const struct timespec *restrict " timeout );
 .PP
 Link with \fI\-lrt\fP.
 .fi
@@ -122,6 +122,10 @@ T}	Thread safety	MT-Safe
 .sp 1
 .SH CONFORMING TO
 POSIX.1-2001, POSIX.1-2008.
+.PP
+POSIX doesn't specify the parameters to be
+.IR restrict ;
+that is specific to glibc.
 .SH NOTES
 One can achieve polling by using a non-NULL
 .I timeout

-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help