Exemplo n.º 1
0
//Sleep the process until the kernel passes it an interrupt message
void waitForIRQ(unsigned int irq_number) {

    //Post a request to register the IRQ
    postMessage(0, KS_REG_IRQ_1 + (irq_number - 1), 0);

    //Get 'OK registered' message from kernel
    getMessageFrom(&temp_msg, 0, KS_REG_IRQ_1 + irq_number - 1);

    //Wait for interrupt message from kernel
    getMessageFrom(&temp_msg, 0, KS_REG_IRQ_1 + (irq_number - 1));
}
Exemplo n.º 2
0
unsigned int getProcessCPUUsage(unsigned int pid) {

    postMessage(0, KS_GET_PROC_CPU_PCT, pid);
    getMessageFrom(&temp_msg, 0, KS_GET_PROC_CPU_PCT);

    return temp_msg.payload;
}
Exemplo n.º 3
0
unsigned int getCurrentPid() {

    postMessage(0, KS_GET_PID, 0);
    getMessageFrom(&temp_msg, 0, KS_GET_PID);

    return temp_msg.payload;
}
Exemplo n.º 4
0
unsigned int getNextPid() {

    unsigned int return_pid = 0;

    if(current_process == 256)
        return 0;

    while(!return_pid) {

        postMessage(0, KS_PID_FROM_SLOT, current_process);
        getMessageFrom(&temp_msg, 0, KS_PID_FROM_SLOT);
        return_pid = temp_msg.payload;

        if(current_process == 255) {

            if(return_pid) {

                break;
            } else {

                current_process++;
                return 0;
            }
        } else {

            current_process++;
        }
    }

    return return_pid;
}
Exemplo n.º 5
0
int startThread() {
    
    postMessage(0, KS_START_THREAD, 0);
    getMessageFrom(&temp_msg, 0, KS_START_THREAD);
    
    return temp_msg.payload;
}
Exemplo n.º 6
0
unsigned int registerIRQ(unsigned int irq_number) {

    //Post a request to register the IRQ
    postMessage(0, KS_REG_IRQ_1 + (irq_number - 1), 0);

    //Wait for the reply from the kernel
    getMessageFrom(&temp_msg, 0, KS_REG_IRQ_1 + irq_number - 1);

    //Tell the requester whether or not the registration succeeded
    return temp_msg.payload;
}
Exemplo n.º 7
0
int initMouse() {
		
	message temp_msg;	
		
	//Get mouse provider from registrar
    //In the future, we should update registrar to enable the registration and detection
	//of multiples modules all providing the same service class so that if, for instance,
	//both the USB module and the PS2 module detect and register a mouse then we want to 
	//subscribe to messages from both of them. Right now, we just get the first service 
	//that was registered
	postMessage(REGISTRAR_PID, REG_LOOKUP, SVC_MOUSE);
    getMessage(&temp_msg);
    if(!(mouse_pid = temp_msg.payload))
	    return 0;
	
	//Send a 'register me' message to the provider
	postMessage(mouse_pid, MOUSE_REG_LISTENER, 1);
	getMessageFrom(&temp_msg, mouse_pid, MOUSE_REG_LISTENER);
	 
	//After this, the client should be prepared to recieve mouse update messages in its message queue
	return temp_msg.payload;
}
Exemplo n.º 8
0
//Sleep the process until the kernel passes it an interrupt message
void waitForIRQ(unsigned int irq_number) {

    getMessageFrom(&temp_msg, 0, KS_REG_IRQ_1 + (irq_number - 1));
}