Beispiel #1
0
uint8_t g_atomic_try_lock(uint8_t* atom) {
	g_syscall_atomic_lock data;
	data.atom = atom;
	data.try_only = true;
	g_syscall(G_SYSCALL_ATOMIC_LOCK, (uint32_t) &data);
	return data.was_set;
}
Beispiel #2
0
/**
 * @see header
 */
g_message_send_status g_send_msg(uint32_t taskId, g_message* message) {
	g_syscall_send_msg sendData;
	sendData.message = message;
	sendData.taskId = taskId;
	g_syscall(G_SYSCALL_MAILBOX_SEND, (uint32_t) &sendData);
	return sendData.sendResult;
}
void g_configure_process(g_process_creation_identifier process, g_process_configuration config) {

	g_syscall_configure_process data;
	data.processObject = process;
	data.configuration = config;
	g_syscall(G_SYSCALL_CONFIGURE_PROCESS, (uint32_t) &data);
}
Beispiel #4
0
void g_ramdisk_info(int node, g_ramdisk_entry_info* out) {
	g_syscall_ramdisk_info data;
	data.nodeId = node;
	g_syscall(G_SYSCALL_RAMDISK_INFO, (uint32_t) &data);
	out->length = data.length;
	strcpy((char*) out->name, (char*) data.name);
	out->type = data.type;
}
Beispiel #5
0
g_vm86_call_status g_call_vm86(uint32_t interrupt, g_vm86_registers* in, g_vm86_registers* out) {
	g_syscall_call_vm86 data;
	data.interrupt = interrupt;
	data.in = *in;
	data.out = out;
	g_syscall(G_SYSCALL_CALL_VM86, (uint32_t) &data);
	return data.status;
}
Beispiel #6
0
g_message_receive_status g_recv_msg_m(uint32_t taskId, g_message* message, int mode) {
	g_syscall_recv_msg receiveData;
	receiveData.taskId = taskId;
	receiveData.message = message;
	receiveData.mode = mode;
	g_syscall(G_SYSCALL_MAILBOX_RECEIVE, (uint32_t) &receiveData);
	return receiveData.receiveResult;
}
Beispiel #7
0
void g_pipe_s(g_fd* out_write, g_fd* out_read, g_fs_pipe_status* out_status) {

	g_syscall_fs_pipe data;
	g_syscall(G_SYSCALL_FS_PIPE, (uint32_t) &data);
	*out_write = data.write_fd;
	*out_read = data.read_fd;
	if (out_status) {
		*out_status = data.status;
	}
}
Beispiel #8
0
int32_t g_open_fs(const char *name, int32_t flags, g_fs_open_status* out_status) {

	g_syscall_fs_open data;
	data.path = (char*) name;
	data.flags = flags;
	g_syscall(G_SYSCALL_FS_OPEN, (uint32_t) &data);
	if (out_status) {
		*out_status = data.status;
	}
	return data.fd;
}
Beispiel #9
0
int32_t g_write_s(g_fd file, const void* buffer, uint64_t length, g_fs_write_status* out_status) {

	g_syscall_fs_write data;
	data.fd = file;
	data.buffer = (uint8_t*) buffer;
	data.length = length;
	g_syscall(G_SYSCALL_FS_WRITE, (uint32_t) &data);
	if (out_status) {
		*out_status = data.status;
	}
	return data.result;
}
Beispiel #10
0
void g_ramdisk_info(int node, g_ramdisk_entry_info* out) {
	g_syscall_ramdisk_info data;
	data.nodeId = node;
	g_syscall(G_SYSCALL_RAMDISK_INFO, (uint32_t) &data);

	// copy name
	char* src = data.name;
	char* dest = out->name;
	while (*src) {
		*dest++ = *src++;
	}
	*dest = 0;

	out->length = data.length;
	out->type = data.type;
}
Beispiel #11
0
/**
 * @see header
 */
void* g_alloc_mem(int32_t size) {
	g_syscall_alloc_mem data;
	data.size = size;
	g_syscall(G_SYSCALL_ALLOCATE_MEMORY, (uint32_t) &data);
	return data.virtualResult;
}
Beispiel #12
0
g_pid g_get_pid() {
    g_syscall_get_pid data;
    g_syscall(G_SYSCALL_GET_PROCESS_ID, (uint32_t) &data);
    return data.id;
}
Beispiel #13
0
void g_exit(int code) {
	g_syscall_exit data;
	data.code = code;
	g_syscall(G_SYSCALL_EXIT, (uint32_t) &data);
	__builtin_unreachable();
}
void g_cancel_process_creation(g_process_creation_identifier process) {
	g_syscall_cancel_process_creation data;
	data.processObject = process;
	g_syscall(G_SYSCALL_CANCEL_PROCESS_CREATION, (uint32_t) &data);
}
Beispiel #15
0
void g_sleep(uint64_t ms) {
	g_syscall_sleep sleepData;
	sleepData.milliseconds = ms;
	g_syscall(G_SYSCALL_SLEEP, (uint32_t) &sleepData);
}
Beispiel #16
0
void g_unmap(void* area) {
	g_syscall_unmap data;
	data.virtualBase = (uint32_t) area;
	g_syscall(G_SYSCALL_UNMAP, (uint32_t) &data);
}
void g_attach_created_process(g_process_creation_identifier process, g_address eip) {
	g_syscall_attach_created_process data;
	data.eip = eip;
	data.processObject = process;
	g_syscall(G_SYSCALL_ATTACH_CREATED_PROCESS, (uint32_t) &data);
}
g_process_creation_identifier g_create_empty_process(g_security_level securityLevel) {
	g_syscall_create_empty_process data;
	data.securityLevel = securityLevel;
	g_syscall(G_SYSCALL_CREATE_EMPTY_PROCESS, (uint32_t) &data);
	return data.processObject;
}
Beispiel #19
0
void __g_exit_thread() {
	g_syscall(G_SYSCALL_EXIT_THREAD, 0);
	__builtin_unreachable();
}
void g_get_working_directory(char* buffer) {
    g_syscall_fs_get_working_directory data;
    data.buffer = buffer;
    g_syscall(G_SYSCALL_GET_WORKING_DIRECTORY, (uint32_t) &data);
}
Beispiel #21
0
void g_join(uint32_t taskId) {
	g_syscall_join data;
	data.taskId = taskId;
	g_syscall(G_SYSCALL_JOIN, (uint32_t) &data);
}