Fixed correctness in stdio, minor changes in ls to handle dirs with negative sizes
[tpg/acess2.git] / Usermode / include / acess / sys.h
index d0b4530..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 {
+       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;
        uint    flags;
-        int    numacls;
        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;
 
 // === 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);
@@ -42,7 +70,9 @@ uint64_t      read(int fd, uint64_t length, void *buffer);
 uint64_t       write(int fd, uint64_t length, void *buffer);
  int   seek(int fd, uint64_t offset, int whence);
  int   ioctl(int fd, int id, void *data);
- int   finfo(int fd, t_sysFInfo *info);
+ 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