Esempio n. 1
0
void mutex_unlock( struct mutex *m )
{
	interrupt_block();
	m->locked=0;
	process_wakeup(&m->waitqueue);
	interrupt_unblock();
}
Esempio n. 2
0
void interrupt_init() {
    int i;
    pic_init(32, 40);
    for (i = 32; i < 48; i++) {
        interrupt_disable(i);
        interrupt_acknowledge(i);
    }
    for (i = 0; i < 32; i++) {
        interrupt_handler_table[i] = unknown_exception;
        interrupt_spurious[i] = 0;
        interrupt_count[i] = 0;
    }
    for (i = 32; i < 48; i++) {
        interrupt_handler_table[i] = unknown_hardware;
        interrupt_spurious[i] = 0;
        interrupt_count[i] = 0;
    }

    // Wire vector index 14 to pagefault handler
    interrupt_handler_table[14] = exception_handle_pagefault;

    interrupt_unblock();

    console_printf("interrupt: ready\n");
}
Esempio n. 3
0
void mutex_lock( struct mutex *m )
{
	interrupt_block();
	while(m->locked) {
		process_wait(&m->waitqueue);
		interrupt_block();
	}
	m->locked=1;
	interrupt_unblock();
}