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; } }
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. */ }
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; }
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; }
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; }
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. */ }
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; }
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; }
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. */ }
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. */ }
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; }
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; }
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); }
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; }
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; }
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; }
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; } }
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; }
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. */ }
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; }
// 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; }