libcedos/cedos.c (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
#include "cedos.h"
#include "assembly.h"
#include <stdint.h>
/*int sysprint(const char *fmt, int arg1, int arg2) {
int res = 0;
interrupt(0x30, res, 4, fmt, arg1, arg2);
return res;
}*/
int yield() {
volatile uint32_t res = 0;
interrupt(0x20, res, 0, 0, 0, 0);
return res;
}
int get_pid() {
volatile uint32_t res = 0;
interrupt(0x30, res, 3, 0, 0, 0);
return res;
}
ssize_t sc_file_read(int fd, char *buffer, size_t size) {
volatile uint32_t res = 0;
interrupt(0x30, res, 0, fd, buffer, size);
return res;
}
ssize_t sc_file_write(int fd, const char *buffer, size_t size) {
volatile uint32_t res = 0;
interrupt(0x30, res, 1, fd, buffer, size);
return res;
}
int sc_file_lseek(int fd, uint32_t offset, int whence) {
volatile uint32_t res = 0;
interrupt(0x30, res, 10, fd, offset, whence);
return res;
}
int sc_file_tell(int fd) {
volatile uint32_t res = 0;
interrupt(0x30, res, 11, fd, 0, 0);
return res;
}
int process_spawn(const char *fname, const char *args) {
volatile uint32_t res = 0;
interrupt(0x30, res, 4, fname, args, 0);
return res;
}
int process_spawn_pipe(const char *fname, const char *args, int fd_in, int fd_out) {
volatile uint32_t res = 0;
interrupt(0x30, res, 4, fname, args, fd_in | (fd_out << 8));
return res;
}
int process_wait(int pid) {
volatile uint32_t res = 0;
interrupt(0x30, res, 5, pid, 0, 0);
return res;
}
int sc_file_open(const char *pathname, uint32_t flags) {
volatile uint32_t res = 0;
interrupt(0x30, res, 6, pathname, flags, 0);
return res;
}
void graphics_set_mode(int mode) {
volatile uint32_t res = 0;
interrupt(0x30, res, 7, mode, 0, 0);
}
void hard_reset() {
volatile uint32_t res = 0;
interrupt(0x30, res, 8, 0, 0, 0);
}
int dir_next(int fd, int index, char *fname_buffer) {
volatile uint32_t res = 0;
interrupt(0x30, res, 9, fd, index, fname_buffer);
return res;
}
int sc_time_get_ticks(void) {
volatile int res = 0;
interrupt(0x30, res, 12, 0, 0, 0);
return res;
}
uint32_t sc_mem_usage(void) {
volatile int res = 0;
interrupt(0x30, res, 13, 0, 0, 0);
return res;
}
void process_kill(int pid) {
volatile uint32_t res = 0;
interrupt(0x30, res, 14, pid, 0, 0);
}
void sleep(int msec) {
volatile uint32_t res = 0;
interrupt(0x30, res, 15, msec, 0, 0);
}
int time_now(datetime_t *buffer) {
volatile uint32_t res = 0;
interrupt(0x30, res, 16, buffer, 0, 0);
return 0;
}