Actually I created a dedicated thread [1] for this issue, since it was
quite out of topic here.
Moreover I was about to update that thread with a new patch (taking
into account the latest changes on proc_mutex, ie.
APR_LOCK_DEFAULT_TIMED introduced with
apr_{proc,thread}_mutex_timedlock).So I continue there... Regards, Yann. [1] http://mail-archives.apache.org/mod_mbox/apr-dev/201410.mbox/%3CCAKQ1sVPp74h8EROkqDXvqo9JaMmq0op-Zskj6Xv=tzgp4z2...@mail.gmail.com%3E On Tue, Mar 24, 2015 at 8:29 PM, William A. Rowe Jr. <[email protected]> wrote: > I'm crawling back through emails pended while I was handling my late > father's affairs last year. Is this still something that needs more > eyeballs? > > Bill > > > On Tue, 17 Jun 2014 23:57:17 +0200 > Yann Ylavic <[email protected]> wrote: > >> Is there any chance this could be integrated into 1.6, or any fix that >> allows apr_os_proc_mutex_put/get() on posix semaphores (sem_t)? >> >> Regards, >> Yann. >> >> On Tue, Apr 15, 2014 at 12:37 AM, Yann Ylavic <[email protected]> >> wrote: >> > Also, it seems that the posix sems (ie. sem_t from semaphore.h) are >> > handled as a file descriptor by apr_os_proc_mutex_get/set(), instead >> > of the native sem_t. >> > >> > I tried to address all the issues related to proc_mutex (different) >> > interfaces in the attached patch (v3, since v1 and v2 were already >> > sent privatly to Jeff... I take this opportunity to modify >> > slightly/accordingly the description below). >> > >> > I came up with this changes : >> > 1. Add "sem_t *psem_interproc" to the end of the apr_os_proc_mutex_t >> > struct (the only public API change), >> > 2. Handle this new field in apr_os_proc_mutex_get/set() when >> > APR_HAS_POSIXSEM_SERIALIZE, >> > 3. Use "apr_os_proc_mutex_t *os" in the private unix(es) >> > apr_proc_mutex_t struct instead of duplicating all its fields, >> > 4. When the apr_proc_mutex_t's "apr_file_t *interproc" field is >> > needed (only APR_HAS_FCNTL_SERIALIZE or APR_HAS_FLOCK_SERIALIZE >> > now), set "os->crossproc = interproc->filedes" so that we can use >> > only os' fields in all the native functions, >> > 5. Depending on how the apr_proc_mutex_t->interproc was created >> > (apr_proc_mutex_create()::apr_file_open() vs >> > apr_os_proc_mutex_put()::apr_os_file_put() cases), we have to simply >> > apr_file_close() the interproc or also close the os->crossproc (this >> > is to keep consistency with others proc_mutex implementations which >> > close/destroy their underlying OS objects on cleanup, whether >> > _create() or _put() was used), >> > 6. Fix the Netware and OS2 apr_os_proc_mutex_get() returned status, >> > and implement apr_os_proc_mutex_set() on Netware. >> > 7. Add static APR_INLINE apr_os_proc_mutex_reset() to reset the >> > corresponding struct (NULL pointers, but mainly -1 for the file >> > descriptor used by flock/fcntl), eg. before setting the only field >> > to be used by apr_os_proc_mutex_put(). >> > >> > For points 1 and 7, I don't know if this is backportable to 1.x, >> > these are API changes... >> > I can't tell either if the type of the os_mutex is needed in the >> > struct (as a separate field), the doc could impose every field to be >> > NULL/-1 but the used (native) type, or use 7 for that. >
