Fixed correctness in stdio, minor changes in ls to handle dirs with negative sizes
[tpg/acess2.git] / Usermode / include / acess / sys.h
index 05f717b..707e5bb 100644 (file)
 #define OPENFLAG_READ  0x02
 #define OPENFLAG_WRITE 0x04
 #define        OPENFLAG_NOLINK 0x40
-#define SEEK_SET       1
-#define SEEK_CUR       0
-#define SEEK_END       -1
+#ifndef SEEK_CUR
+# define SEEK_SET      1
+# define SEEK_CUR      0
+# define SEEK_END      -1
+#endif
 #define CLONE_VM       0x10
 #define FILEFLAG_DIRECTORY     0x10
 #define FILEFLAG_SYMLINK       0x20
 
 // === TYPES ===
 struct s_sysACL {
-       uint32_t        object;
-       uint32_t        perms;
+       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 {
        uint    uid, gid;
@@ -34,16 +48,21 @@ struct s_sysFInfo {
        struct s_sysACL acls[];
 };
 typedef struct s_sysFInfo      t_sysFInfo;
+typedef struct s_sysACL        t_sysACL;
 
 // === FUNCTIONS ===
 void   _SysDebug(char *str, ...);
 // --- Proc ---
+void   _exit(int status)       __attribute__((noreturn));
 void   sleep();
 void   wait(int miliseconds);
  int   waittid(int id, int *status);
  int   clone(int flags, void *stack);
  int   execve(char *path, char **argv, char **envp);
+void   setuid(int id);
+void   setgid(int id);
 // --- VFS ---
+ int   chdir(char *dir);
  int   open(char *path, int flags);
  int   reopen(int fd, char *path, int flags);
 void   close(int fd);
@@ -53,6 +72,7 @@ uint64_t      write(int fd, uint64_t length, void *buffer);
  int   ioctl(int fd, int id, void *data);
  int   finfo(int fd, t_sysFInfo *info, int maxacls);
  int   readdir(int fd, char *dest);
+ int   _SysGetACL(int fd, t_sysACL *dest);
 
 // --- MEMORY ---
 uint64_t       _SysGetPhys(uint vaddr);

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