X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2Finclude%2Fsys%2Ftypes.h;h=ec3d43e378b5ecae75dd165773101a7f1bbcf5d6;hb=4405b4fa990821a88cbded9fdf85d226ef3b3f66;hp=03ee846bf9a66c0903088819fcf436c2c4fe10c1;hpb=17e16b3110b4c5124b0707435e0427993d696545;p=tpg%2Facess2.git diff --git a/Usermode/include/sys/types.h b/Usermode/include/sys/types.h index 03ee846b..ec3d43e3 100644 --- a/Usermode/include/sys/types.h +++ b/Usermode/include/sys/types.h @@ -1,6 +1,8 @@ - +/* + */ #ifndef _SYS_TYPES_H #define _SYS_TYPES_H +#include typedef struct { int st_dev; //dev_t @@ -25,4 +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