Joel Sherrill commented on a discussion on testsuites/psxtests/psxmsgq01/init.c: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/364#note_122731 > fatal_posix_service_status( status, 0, "mq_close duplicate message > queue"); > status = mq_close( Test_q[CLOSED].mq ); > fatal_posix_service_status( status, 0, "mq_close message queue"); > + /* > + * EBADF - Close a queue that is already closed. > + */ > + status = mq_close( Test_q[CLOSED].mq ); > + fatal_posix_service_status( status, -1, "mq_close error return status"); > + fatal_posix_service_status( errno, EBADF, "mq_close errno EBADF"); I think the change is correct because it is invalidating the id passed in to mq_close(). The test changes are likely ok but not exercising what changed fully. This use case may require a different approach with multiple calls. mq_unlink() takes the mq out of the namespace. You cannot mq_open() it again but all mq descriptors from previous opens on the same mq are valid until all are closed. How about something like this: + mq_open + mq_unlink + mq_open again -> should fail. + mq_close -> OK, should delete since no uses + mq_close -> should fail, mq id is now invalid The second mq_open is what verifies the mq name is gone. The first mq_close() working says the id is ok. The second says the id is no longer OK. mq_getattr() is a call which could be used to verify if an id is valid or not. -- View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/364#note_122731 You're receiving this email because of your account on gitlab.rtems.org.
_______________________________________________ bugs mailing list bugs@rtems.org http://lists.rtems.org/mailman/listinfo/bugs