Ejemplo n.º 1
0
static void DDKAPI timer_thread(LPVOID arg)
{
	while (1) {
		KeWaitForMultipleObjects(2, timer_wait_objs, WaitAny, Executive, KernelMode, FALSE, NULL, NULL);
		if (timer_done)
			break;
		lkl_trigger_irq(TIMER_IRQ);
	}

	PsTerminateSystemThread(STATUS_SUCCESS);
}
Ejemplo n.º 2
0
long lkl_syscall(long no, long *params)
{
	struct syscall_thread_data *data = &syscall_thread_data;
	struct syscall s;

	s.no = no;
	s.params = params;
	s.sem = data->completion;

	lkl_ops->sem_down(data->mutex);
	data->s = &s;
	lkl_trigger_irq(syscall_irq, NULL);
	lkl_ops->sem_down(data->completion);
	lkl_ops->sem_up(data->mutex);

	return s.ret;
}