Example #1
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
	d->read_locks = 0;
	d->write_locks = 0;
	d->lock_list = 0;
	// For the global lock
	if (!g_mutex_init) {
		osp_spin_lock_init(&g_mutex);
		g_mutex_init = 1;
	}
}
Example #2
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
}
Example #3
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	/* Add initialization code here if you add fields to osprd_info_t. */
	d->num_ramdisks_open = 0;
	d->read_lock_count = 0;
	d->write_lock_count = 0;
}
Example #4
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
	d->reader_cnt = d->writer_cnt = d->exited_tickets_cnt = 0;
	d->exited_tickets = (unsigned *) kmalloc(1024 * sizeof(unsigned), GFP_ATOMIC);
	d->current_pid = -1;
}
Example #5
0
static void osprd_setup(osprd_info_t *d)
{
    /* Initialize the wait queue. */
    init_waitqueue_head(&d->blockq);
    osp_spin_lock_init(&d->mutex);
    d->ticket_head = d->ticket_tail = 0;
    /* Add code here if you add fields to osprd_info_t. */
    d->n_write_locks = 0;
    d->n_read_locks = 0;
    d->pid_array = kzalloc(256 * sizeof(pid_t), 0);
    d->pid_count = 0;
}
Example #6
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	d->write_lock_count = 0;
	d->current_write_pid = -1;
	d->read_lock_count = 0;
	d->read_queue = NULL;
	/* Add code here if you add fields to osprd_info_t. */
}
Example #7
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
	linked_list_init(&d->read_locking_pids);
	linked_list_init(&d->invalid_tickets);
	d->write_locking_pid = 0;
	d->passwd_hash = 0;
}
Example #8
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
    d->readLocks = 0;
    d->writeLocks = 0;
    d->numInterrupt = 0;
    d->deadlock = 0;
}
Example #9
0
static void osprd_setup(osprd_info_t *d)
{
    /* Initialize the wait queue. */
    init_waitqueue_head(&d->blockq);
    osp_spin_lock_init(&d->mutex);
    d->ticket_head = d->ticket_tail = 0;
    d->readLockingPids = NULL;
    d->writeLockingPids = NULL;
    d->exitedTickets = NULL;
    d->holdOtherLocks = 0;
    /* Add code here if you add fields to osprd_info_t. */
}
Example #10
0
File: osprd.c Project: tsleeve/lab2
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	d->readlockPids = kmalloc(sizeof(struct list),GFP_ATOMIC);
	d->readlockPids->num = 0;
	d->exitlist = kmalloc(sizeof(struct list),GFP_ATOMIC);
	d->exitlist->num = 0;
	d->nwriters = 0;
	/* Add code here if you add fields to osprd_info_t. */
}
Example #11
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
    d->num_writer=0;
    d->num_reader=0;
    d->invalid_tickets_array = (unsigned*) kmalloc(1024*sizeof(unsigned), GFP_ATOMIC);
    d->num_invalid_tikets=0;
    d->current_popular_writer=-1;
}
Example #12
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
    d->read_locks = 0;
    d->write_locks = 0;
    d->dead_tickets = kzalloc(sizeof(unsigned) * ARRAY_INIT_SIZE, GFP_ATOMIC);
    d->dt_len = 0;
    d->dt_cap = ARRAY_INIT_SIZE;
}
Example #13
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */

	d->any_other_lock_count = 0;
	init_ticket_array(&d->exitedTickets, 50);	
	init_pid_array(&d->pid_read_lock, 50);
	init_pid_array(&d->pid_write_lock, 50);
}
Example #14
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
	d->write_lock_thread_set = d->read_lock_thread_set = -1;
	d->num_read_locked = 0;
	d->write_proc = NULL;
	d->write_locked = 0;
	
}
Example #15
0
File: osprd.c Project: micwa/ucla
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;

	// Create dummy nodes
    d->invalid_tickets = kzalloc(sizeof(struct int_list), GFP_ATOMIC);
    d->invalid_tickets->next = d->invalid_tickets;
    d->read_lock_list = kzalloc(sizeof(struct int_list), GFP_ATOMIC);
    d->read_lock_list->next = d->read_lock_list;

    d->write_lock_pid = -1;
}
Example #16
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */

  d->num_read_locks = 0;
  d->num_write_locks = 0;
  d->num_to_requeue = 0;

  d->lock_holder_l = NULL;
	d->lock_waiter_l = NULL;
}
Example #17
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	int i;
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;

	/* Add code here if you add fields to osprd_info_t.*/
	d->write_lock = 0;
	d->read_lock = 0;
	for(i=0; i<NOSPRD; i++){
		d->dependencies[i]=0;
	}
}
Example #18
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
	d->read_locks = 0;
	d->write_lock = 0;
	d->invalid_tickets.next = NULL;
	d->invalid_tickets.num = -1;
	d->read_lock_procs.next = NULL;
	d->read_lock_procs.pid = -1;
	d->write_lock_proc = -1;
}
Example #19
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	d->head_write = 0;
	d->read_locking_pids.size = 0;
	d->write_locking_pids.size = 0;
	d->invalid_tickets.size = 0;
	d->write_locking_pids.head = NULL;
	d->read_locking_pids.head = NULL;
	d->invalid_tickets.head = NULL;
	/* Add code here if you add fields to osprd_info_t. */
}
Example #20
0
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
	d->number_write_lock = 0;
	d->number_read_lock = 0;
	d->check_deadlock_list_tail = NULL;
	d->check_deadlock_list_head = NULL;
	//d->write_lock_holder = -1;
	d->pid_list_head= NULL;
	d->pid_list_tail =NULL;
	
}
Example #21
0
// Initialize internal fields for an osprd_info_t.
// first implement this
static void osprd_setup(osprd_info_t *d)
{
	/* Initialize the wait queue. */
	init_waitqueue_head(&d->blockq);
	osp_spin_lock_init(&d->mutex);
	d->ticket_head = d->ticket_tail = 0;
	/* Add code here if you add fields to osprd_info_t. */
	d->write_locking_pids = kmalloc(sizeof(list*), GFP_ATOMIC);
	d->write_locking_pids->size = 0;
	d->write_locking_pids->head = NULL;
	d->write_locking_pids->tail = NULL;
	d->read_locking_pids = kmalloc(sizeof(list*), GFP_ATOMIC);
	d->read_locking_pids->size = 0;
	d->read_locking_pids->head = NULL;
	d->read_locking_pids->tail = NULL;
	d->invalid_tickets = kmalloc(sizeof(list*), GFP_ATOMIC);
	d->invalid_tickets->size = 0;
	d->invalid_tickets->head = NULL;
	d->invalid_tickets->tail = NULL;
}