#ifndef _LIBMSL_M_SYSTEM_H #define _LIBMSL_M_SYSTEM_H #include #include #include #include #include #include #include #include /* Quit the current running process */ int quit(void); /* Test syscall */ int test(char c); /* Give the CPU to another process */ int sched(void); /* map memory into this procgrou[ */ void* map(uintptr_t vaddr, size_t pages, uint32_t flags); /* unmap memory from this procgrou[ */ int unmap(uintptr_t vaddr, size_t pages); /* Clone process with argument and entry point */ int clone(uintptr_t vstack_top, void (*entry)(void), void* argument_ptr); /* Create a mutex */ int mutex_create(void); /* Delete a mutex. Will wake up waiters */ int mutex_delete(int mutex_rid); /* Lock a mutex */ int mutex_lock(int mutex_rid); /* Unlock a mutex */ int mutex_unlock(int mutex_rid); /* get current process argument pointer */ void* argument_ptr(void); /* Call a device command */ int device_do(const char* device_key, int cmd, void* a1, void* a2, void* a3, void* a4); /* Run external ELF program */ int exec(const char* volume, const char* path, const char* cmdline); /* Open a file */ int volume_open(const char* volume); /* Close a file */ int volume_close(void); /* Read a file */ int read_file(const char* path, size_t off, uint8_t* buffer, size_t size); /* describe a file */ int describe(const char* path, struct desc* desc); /* send a message to a procgroup's mail */ int mail_send(int pgid, void* mesg, size_t mesg_size); /* receive a message from mail */ int mail_receive(void* mesg, size_t mesg_size); /* get procgroup id of a perticular process */ int get_procgroup(int pid); /* get PID of process, which exec'ed the current process */ int get_exec_pid(void); /* Read directory entry */ int read_dir_entry(const char* path, struct dir_entry* entry, size_t entry_num); /* create a file */ int create_file(const char* path); /* write to a file */ int write_file(const char* path, size_t off, uint8_t* buffer, size_t size, uint32_t flags); /* wait for process */ int wait_for_pid(int pid); /* Kill process */ int kill(int pid); /* Create a directory */ int create_dir(const char* path); /* Remove filesystem entry */ int remove(const char* path); /* mount a volume */ int create_volume(const char* key, int fs_type, const char* device_key); /* Prepare process for execution */ int exec_partial(const char* volume, const char* path, const char* cmdline); /* Finish process for execution - run it! */ int exec_partial_fini(int pid); /* get this process' PID */ int get_self_pid(void); /* Write to a stream */ int stream_write(int pgid, int rid, void* buffer, size_t size); /* Read from a stream */ int stream_read(int rid, void* buffer, size_t size); /* get process information */ int get_proc_info(struct proc_info* infos, size_t count); /* get device information */ int get_device_info(struct device_info* infos, size_t count); /* get volume information */ int get_volume_info(struct volume_info* infos, size_t count); /* delete a volume */ int volume_delete(const char* key); /* Get date-time */ int date_time(struct date_time* dt); /* Get commandline string */ const char* get_cmdline(void); /* check if PID is alive */ int proc_is_alive(int pid); #endif // _LIBMSL_M_SYSTEM_H