View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001282 | 1003.1(2016/18)/Issue7+TC2 | Base Definitions and Headers | public | 2019-08-23 16:19 | 2024-06-11 09:08 |
| Reporter | joelsherrill | Assigned To | |||
| Priority | normal | Severity | Editorial | Type | Clarification Requested |
| Status | Closed | Resolution | Accepted As Marked | ||
| Name | Joel Sherrill | ||||
| Organization | |||||
| User Reference | |||||
| Section | mqueue.h | ||||
| Page Number | NA - used web | ||||
| Line Number | NA - used web | ||||
| Interp Status | --- | ||||
| Final Accepted Text | 0001282:0005880 | ||||
| Summary | 0001282: mqueue.h - pthread_attr_t is listed as defined but unclear why | ||||
| Description | Ref: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/mqueue.h.html Issue: In mqueue.h, pthread_attr_t is listed as defined but there is no need for it as best I can see in the mqueue APIs. Is this just a cut and paste mistake? Response from Geoff Clare when asked on mailing list: "It's needed if you want to have mq_notify() do a SIGEV_THREAD notification. However, what's odd here is that mqueue.h is only required to declare struct sigevent as incomplete, so if you want to actually populate a struct sigevent you therefore need to include signal.h to get it properly defined -- in which case signal.h will define pthread_attr_t, so there is no need for mqueue.h to do it. So I think either mqueue.h should be required to define struct sigevent or it should not be required to define pthread_attr_t." | ||||
| Desired Action | There are multiple ways to resolve this but I think Geoff's suggestion of not requiring mqueue.h to define pthread_attr_t seems the simplest. It also is consistent with the example provided with mq_notify() that includes pthread.h. | ||||
| Tags | tc3-2008 | ||||
|
|
The example code includes <pthread.h>, but it doesn't include <signal.h>. If we don't change <mqueue.h> to require a complete definition of struct sigevent then we should add #include <signal.h> to the example. |
|
|
I think the sigevent reference as an incomplete type is so it is not material whether <mqueue.h> #include's <signal.h> or not, or which order an application may #include these headers separately. It would be a quality of implementation issue that these headers note whether the necessary types have been declared already, whichever is referenced first. If an application doesn't make use of mq_notify() it may not have to #include <signal.h> at all then. What I see as missing, if <mqueue.h> is #include'd first, is that the sigval union should also be defined or declared, as the sigevent structure requires this type also. |
|
|
On page 297 line 10082 section <mqueue.h>, change:shall define the pthread_attr_t, size_t, and ssize_t typesto: shall define the size_t and ssize_t types On page 1353 line 45082 section mq_notify() EXAMPLES, after: add:#include <pthread.h> #include <signal.h> On page 1355 line 45136 section mq_notify() APPLICATION USAGE, change: None.to: Since the <mqueue.h> header is only required to declare the sigevent structure tag as naming an incomplete structure type, in order to use mq_notify() and pass it a pointer to a sigevent structure, applications need to include <signal.h> so that sigevent will be fully defined. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2019-08-23 16:19 | joelsherrill | New Issue | |
| 2019-08-23 16:19 | joelsherrill | Name | => Joel Sherrill |
| 2019-08-23 16:19 | joelsherrill | Section | => mqueue.h |
| 2019-08-23 16:19 | joelsherrill | Page Number | => NA - used web |
| 2019-08-23 16:19 | joelsherrill | Line Number | => NA - used web |
| 2019-08-23 16:29 | geoffclare | Interp Status | => --- |
| 2019-08-23 16:29 | geoffclare | Category | System Interfaces => Base Definitions and Headers |
| 2019-08-23 16:41 | geoffclare | Note Added: 0004537 | |
| 2019-08-24 21:25 | shware_systems | Note Added: 0004539 | |
| 2019-08-24 21:34 | shware_systems | Note Edited: 0004539 | |
| 2022-06-30 16:26 | geoffclare | Note Added: 0005880 | |
| 2022-06-30 16:27 | geoffclare | Final Accepted Text | => 0001282:0005880 |
| 2022-06-30 16:27 | geoffclare | Status | New => Resolved |
| 2022-06-30 16:27 | geoffclare | Resolution | Open => Accepted As Marked |
| 2022-06-30 16:27 | geoffclare | Tag Attached: tc3-2008 | |
| 2022-06-30 16:33 | geoffclare | Note Edited: 0005880 | |
| 2022-07-19 14:10 | geoffclare | Status | Resolved => Applied |
| 2024-06-11 09:08 | agadmin | Status | Applied => Closed |