Beispiel #1
0
void rwsem_initialize(rwsem_t *rwsem)
{
  rwsem->stat = 0;
  waitqueue_initialize(&rwsem->writers_wq);
  waitqueue_initialize(&rwsem->readers_wq);
  spinlock_initialize(&rwsem->sem_lock, "R/W semaphore");
}
Beispiel #2
0
cuda_instance_t *cuda_init(cuda_t *dev, inr_t inr, cir_t cir, void *cir_arg)
{
	cuda_instance_t *instance
	    = malloc(sizeof(cuda_instance_t), FRAME_ATOMIC);
	if (instance) {
		instance->cuda = dev;
		instance->kbrdin = NULL;
		instance->xstate = cx_listen;
		instance->bidx = 0;
		instance->snd_bytes = 0;

		spinlock_initialize(&instance->dev_lock, "cuda.instance.dev_lock");

		/* Disable all interrupts from CUDA. */
		pio_write_8(&dev->ier, IER_CLR | ALL_INT);

		irq_initialize(&instance->irq);
		instance->irq.devno = device_assign_devno();
		instance->irq.inr = inr;
		instance->irq.claim = cuda_claim;
		instance->irq.handler = cuda_irq_handler;
		instance->irq.instance = instance;
		instance->irq.cir = cir;
		instance->irq.cir_arg = cir_arg;
		instance->irq.preack = true;
	}
	
	return instance;
}
Beispiel #3
0
/** Initialize a call structure.
 *
 * @param call Call structure to be initialized.
 *
 */
static void _ipc_call_init(call_t *call)
{
	memsetb(call, sizeof(*call), 0);
	spinlock_initialize(&call->forget_lock, "forget_lock");
	call->active = false;
	call->forget = false;
	call->sender = NULL;
	call->buffer = NULL;
}
Beispiel #4
0
kbrd_instance_t *kbrd_init(void)
{
	kbrd_instance_t *instance
	    = malloc(sizeof(kbrd_instance_t), FRAME_ATOMIC);
	if (instance) {
		instance->thread = thread_create(kkbrd, (void *) instance,
		    TASK, THREAD_FLAG_NONE, "kkbrd");
		
		if (!instance->thread) {
			free(instance);
			return NULL;
		}
		
		instance->sink = NULL;
		indev_initialize("kbrd", &instance->raw, &kbrd_raw_ops);
		
		spinlock_initialize(&instance->keylock, "kbrd.instance.keylock");
		instance->keyflags = 0;
		instance->lockflags = 0;
	}
	
	return instance;
}
Beispiel #5
0
/** Initialize command info structure.
 *
 * @param cmd Command info structure.
 *
 */
void cmd_initialize(cmd_info_t *cmd)
{
	spinlock_initialize(&cmd->lock, "cmd.lock");
	link_initialize(&cmd->link);
}