Austin Group Defect Tracker

Aardvark Mark III


Viewing Issue Simple Details Jump to Notes ] Issue History ] Print ]
ID Category Severity Type Date Submitted Last Update
0001282 [1003.1(2016)/Issue7+TC2] Base Definitions and Headers Editorial Clarification Requested 2019-08-23 16:19 2019-08-24 21:25
Reporter joelsherrill View Status public  
Assigned To
Priority normal Resolution Open  
Status New  
Name Joel Sherrill
Organization
User Reference
Section mqueue.h
Page Number NA - used web
Line Number NA - used web
Interp Status ---
Final Accepted Text
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 No tags attached.
Attached Files

- Relationships

-  Notes
(0004537)
geoffclare (manager)
2019-08-23 16:41

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.
(0004539)
shware_systems (reporter)
2019-08-24 21:25
edited on: 2019-08-24 21:34

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.


- Issue History
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


Mantis 1.1.6[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker