Usermode/include - Terminal device changes (TODO: use kernel version only)
[tpg/acess2.git] / Usermode / include / acess / sys.h
index f933486..6d7751b 100644 (file)
@@ -1,72 +1,79 @@
 /*
  * Acess2 System Interface Header
  */
-#ifndef _SYS_SYS_H_
-#define _SYS_SYS_H_
+#ifndef _ACESS_SYS_H_
+#define _ACESS_SYS_H_
 
 #include <stdint.h>
+#include "../sys/types.h"
 
 // === CONSTANTS ===
+#ifndef NULL
+# define NULL  ((void*)0)
+#endif
+
 #define OPENFLAG_EXEC  0x01
 #define OPENFLAG_READ  0x02
 #define OPENFLAG_WRITE 0x04
 #define        OPENFLAG_NOLINK 0x40
-#define SEEK_SET       1
-#define SEEK_CUR       0
-#define SEEK_END       -1
-#define CLONE_VM       0x10
+#define        OPENFLAG_CREATE 0x80
+#ifndef SEEK_CUR
+# define SEEK_SET      1
+# define SEEK_CUR      0
+# define SEEK_END      -1
+#endif
+#define GETMSG_IGNORE  ((void*)-1)
 #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;
-       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;
+
+// === VARIABLES ===
+extern int     _errno;
 
 // === FUNCTIONS ===
-void   _SysDebug(char *str, ...);
+extern void    _SysDebug(const char *format, ...);
 // --- Proc ---
-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);
+extern void    _exit(int status)       __attribute__((noreturn));
+extern void    sleep(void);
+extern void    yield(void);
+extern int     kill(int pid, int sig);
+extern void    wait(int miliseconds);
+extern int     waittid(int id, int *status);
+extern int     clone(int flags, void *stack);
+extern int     execve(char *path, char **argv, char **envp);
+extern int     gettid(void);
+extern int     getpid(void);
+extern int     _SysSetFaultHandler(int (*Handler)(int));
+extern void    SysSetName(const char *Name);
+//extern int   SysGetName(const char *Name);
+
+// --- Permissions ---
+extern int     getuid(void);
+extern int     getgid(void);
+extern void    setuid(int id);
+extern void    setgid(int id);
+
 // --- VFS ---
- int   open(char *path, int flags);
- int   reopen(int fd, char *path, int flags);
-void   close(int fd);
-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 maxacls);
- int   readdir(int fd, char *dest);
- int   _SysGetACL(int fd, t_sysACL *dest);
+extern int     chdir(const char *dir);
+extern int     open(const char *path, int flags);
+extern int     reopen(int fd, const char *path, int flags);
+extern int     close(int fd);
+extern uint    read(int fd, void *buffer, uint length);
+extern uint    write(int fd, const void *buffer, uint length);
+extern int     seek(int fd, int64_t offset, int whence);
+extern uint64_t        tell(int fd);
+extern int     ioctl(int fd, int id, void *data);
+extern int     finfo(int fd, t_sysFInfo *info, int maxacls);
+extern int     readdir(int fd, char *dest);
+extern int     _SysOpenChild(int fd, char *name, int flags);
+extern int     _SysGetACL(int fd, t_sysACL *dest);
+extern int     _SysMount(const char *Device, const char *Directory, const char *Type, const char *Options);
+extern int     select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errfds, time_t *timeout);
+
+// --- IPC ---
+extern int     SysSendMessage(pid_t dest, uint length, const void *Data);
+extern int     SysGetMessage(pid_t *src, void *Data);
 
 // --- MEMORY ---
 uint64_t       _SysGetPhys(uint vaddr);

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