This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
2008-12-17 Thomas Schwinge <tschwinge@gnu.org> * sysdeps/mach/hurd/bits/socket.h: New file, copy from the bsd4.4 one. (SOCK_MAX, SOCK_TYPE_MASK): New definitions. (SOCK_CLOEXEC, SOCK_NONBLOCK): New definitions. Recipe: Copy sysdeps/unix/bsd/bsd4.4/bits/socket.h to sysdeps/mach/hurd/bits/socket.h -- I don't think these enhancements fit into the bsd4.4 case anymore. --- sysdeps/unix/bsd/bsd4.4/bits/socket.h 2008-12-16 00:04:53.000000000 +0100 +++ sysdeps/mach/hurd/bits/socket.h 2008-12-17 01:06:25.000000000 +0100 @@ -51,9 +51,25 @@ enum __socket_type #define SOCK_RAW SOCK_RAW SOCK_RDM = 4, /* Reliably-delivered messages. */ #define SOCK_RDM SOCK_RDM - SOCK_SEQPACKET = 5 /* Sequenced, reliable, connection-based, + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based, datagrams of fixed maximum length. */ #define SOCK_SEQPACKET SOCK_SEQPACKET + +#define SOCK_MAX (SOCK_SEQPACKET + 1) + /* Mask which covers at least up to SOCK_MASK-1. The + remaining bits are used as flags. */ +#define SOCK_TYPE_MASK 0xf + + /* Flags to be ORed into the type parameter of socket and socketpair and + used for the flags parameter of accept4. */ + + SOCK_CLOEXEC = 0x00400000, /* Atomically set close-on-exec flag for the + new descriptor(s). */ +#define SOCK_CLOEXEC SOCK_CLOEXEC + + SOCK_NONBLOCK = 0x0800 /* Atomically mark descriptor(s) as + non-blocking. */ +#define SOCK_NONBLOCK SOCK_NONBLOCK }; /* Protocol families. */ To discuss: which value to use for SOCK_NONBLOCK? I changed it away from our O_NONBLOCK (0x8) which is unusable due to conflicting with the original SOCK_* flags to the Linux 04000 (i.e. 0x0800) value. Do it like this or is there a ``better'' value? Linux, for example, has the following in commit aaca0bdca573f3f51ea03139f9c7289541e7bca3 for alpha and parisc: +/* O_NONBLOCK clashes with the bits used for socket types. Therefore we + * have to define SOCK_NONBLOCK to a different value here. + */ +#define SOCK_NONBLOCK 0x40000000 We need the SOCK_MAX and SOCK_TYPE_MASK (which are also defined in the Linux kernel) to check the SOCK_* definitions for consistency and to be able to extract the original socket type in case of type = SOCK_STREAM | SOCK_CLOEXEC etc. Should these definitions be in bits/socket.h or elsewhere? This is not really Hurd-specific, by the way.
Attachment:
signature.asc
Description: Digital signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |