Usermode/libc - Implementing POSIX/BSD sockets
[tpg/acess2.git] / Usermode / include / sys / types.h
index 2fad39f..ec3d43e 100644 (file)
@@ -27,9 +27,66 @@ typedef struct {
 #define                S_IFSOCK        0140000 /* socket */
 #define                S_IFIFO 0010000 /* fifo */
 
+#define FD_SETSIZE     128
+
+
+#define CLONE_VM       0x10
+
+/**
+ * \brief fd_set for select()
+ */
+typedef struct
+{
+       uint16_t        flags[FD_SETSIZE/16];
+}      fd_set;
+
+struct s_sysACL {
+       union {
+               struct {
+                       unsigned        group: 1;
+                       unsigned        id:     31;
+               };
+               uint32_t        object;
+       };
+       union {
+               struct {
+                       unsigned        invert: 1;
+                       unsigned        perms:  31;
+               };
+               uint32_t        rawperms;
+       };
+};
+struct s_sysFInfo {
+       unsigned int    uid, gid;
+       unsigned int    flags;
+       uint64_t        size;
+       uint64_t        atime;
+       uint64_t        mtime;
+       uint64_t        ctime;
+        int    numacls;
+       struct s_sysACL acls[];
+};
+typedef struct s_sysFInfo      t_sysFInfo;
+typedef struct s_sysACL        t_sysACL;
+
+static inline void FD_ZERO(fd_set *fdsetp) {int i=FD_SETSIZE/16;while(i--)fdsetp->flags[i]=0; }
+static inline void FD_CLR(int fd, fd_set *fdsetp) {
+       if(fd < 0 || fd > FD_SETSIZE)   return;
+       fdsetp->flags[fd/16] &= (uint16_t) ((~1 << (fd%16))) & 0xFFFF;
+}
+static inline void FD_SET(int fd, fd_set *fdsetp) {
+       if(fd < 0 || fd > FD_SETSIZE)   return;
+       fdsetp->flags[fd/16] |= (uint16_t) (1 << (fd%16));
+}
+static inline int FD_ISSET(int fd, fd_set *fdsetp) {
+       if(fd < 0 || fd > FD_SETSIZE)   return 0;
+       return !!( fdsetp->flags[fd/16] & (1<<(fd%16)) );
+}
 
 typedef uint32_t       pid_t;
 typedef uint32_t       tid_t;
 typedef  int64_t       time_t;
 
+typedef unsigned int   uint;
+
 #endif

UCC git Repository :: git.ucc.asn.au