Fodder for future Cygwin development:

For a start I'd like to add some additions to POSIX-1.2025 which catched
my eye.  Whoever wants to take a stab at some of the functionality, feel
free.

I have noticed especially:

- _Fork:

  Same as fork() except that "fork handlers established by means of the
  pthread_atfork() function shall not be called and _Fork() shall be
  async-signal-safe.

- getresgid, getresuid, setresgid, setresuid:

  Getting or setting real, effective, and saved ids in a single function.

- posix_devctl:

  Theoretically just a marginally standarized replacement API for ioctl.
  I wonder if this will ever get traction, though...

- "Close on fork semantics" adding the following new flags:

  O_CLOFORK       open(), dup3()
  SOCK_CLOFORK    socket()
  FD_CLOFORK      fcntl(F_SETFD/F_GETFD)
  F_DUPFD_CLOFORK fcntl()

- "Open file description lock", a Linx invention since Linux 3.15,
  adding the following fcntl() flags:

  F_OFD_SETLK
  F_OFD_SETLKW
  F_OFD_GETLK

  Normal advisory locks created with F_SETLK/F_SETLKW are process-owned
  (i.e., the lock excludes other processes), not inherited by child
  processes, and released at first close() of *any* descriptor
  referencing the file.

  This new OFD lock type is descriptor-owned.  It's inherited via
  fork(), dup(), fcntl(F_DUPFD), etc., so all duplicates of the same
  descriptor share and own the same locks.  The lock is released
  automatically only when the last descriptor referencing it is closed.

That's it for now.

If you have other ideas what could be helpful for Cygwin, don't be shy
to add it to this thread.  Ideally with the intention to look into
implementing it by yourself, but at least a certain willingness to look
into the source code and discuss potential ways to implement it given
the current framework.


Corinna

Reply via email to