Kernel - Implementing select()
[tpg/acess2.git] / Kernel / include / vfs_ext.h
index 720bcbe..acee164 100644 (file)
@@ -29,6 +29,9 @@
 //! Marks a VFS handle as belonging to the kernel
 #define VFS_KERNEL_FLAG        0x40000000
 
+//! Architectual maximum number of file descriptors
+#define MAX_FILE_DESCS 128
+
 /**
  * \brief VFS_Seek directions
  */
@@ -104,6 +107,18 @@ typedef struct sFInfo
        tVFS_ACL        acls[]; //!< ACL buffer (size is passed in the \a MaxACLs argument to VFS_FInfo)
 }      tFInfo;
 
+/**
+ * \brief fd_set for select()
+ */
+typedef struct
+{
+       Uint16  flags[MAX_FILE_DESCS/16];
+}      fd_set;
+
+#define FD_CLR(fd, fdsetp) ((fdsetp)->flags[(fd)/16]&=~(1<<((fd)%16)))
+#define FD_SET(fd, fdsetp) ((fdsetp)->flags[(fd)/16]|=~(1<<((fd)%16)))
+#define FD_ISSET(fd, fdsetp) ((fdsetp)->flags[(fd)/16]&(1<<((fd)%16)))
+
 // === FUNCTIONS ===
 /**
  * \brief Initialise the VFS (called by system.c)

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