/kernel/trunk/generic/include/synch/spinlock.h |
---|
35,13 → 35,10 |
#ifdef CONFIG_SMP |
struct spinlock { |
#ifdef CONFIG_DEBUG_SPINLOCK |
char *name; |
#endif |
int val; |
}; |
extern void spinlock_initialize(spinlock_t *sl, char *name); |
extern void spinlock_initialize(spinlock_t *sl); |
extern void spinlock_lock(spinlock_t *sl); |
extern int spinlock_trylock(spinlock_t *sl); |
extern void spinlock_unlock(spinlock_t *sl); |
/kernel/trunk/generic/src/console/kconsole.c |
---|
92,7 → 92,7 |
/** Initialize kconsole data structures. */ |
void kconsole_init(void) |
{ |
spinlock_initialize(&cmd_lock, "kconsole_cmd"); |
spinlock_initialize(&cmd_lock); |
list_initialize(&cmd_head); |
help_info.name = "help"; |
102,7 → 102,7 |
help_info.argc = 0; |
help_info.argv = NULL; |
spinlock_initialize(&help_info.lock, "kconsole_help"); |
spinlock_initialize(&help_info.lock); |
link_initialize(&help_info.link); |
if (!cmd_register(&help_info)) |
116,7 → 116,7 |
desc_info.argc = 1; |
desc_info.argv = &desc_argv; |
spinlock_initialize(&desc_info.lock, "kconsole_desc"); |
spinlock_initialize(&desc_info.lock); |
link_initialize(&desc_info.link); |
if (!cmd_register(&desc_info)) |
130,7 → 130,7 |
halt_info.argc = 0; |
halt_info.argv = NULL; |
spinlock_initialize(&halt_info.lock, "kconsole_halt"); |
spinlock_initialize(&halt_info.lock); |
link_initialize(&halt_info.link); |
if (!cmd_register(&halt_info)) |
/kernel/trunk/generic/src/console/chardev.c |
---|
39,7 → 39,7 |
void chardev_initialize(chardev_t *chardev, chardev_operations_t *op) |
{ |
waitq_initialize(&chardev->wq); |
spinlock_initialize(&chardev->lock, "chardev"); |
spinlock_initialize(&chardev->lock); |
chardev->counter = 0; |
chardev->index = 0; |
chardev->op = op; |
/kernel/trunk/generic/src/proc/thread.c |
---|
96,7 → 96,7 |
{ |
THREAD = NULL; |
nrdy = 0; |
spinlock_initialize(&threads_lock, "threads_lock"); |
spinlock_initialize(&threads_lock); |
list_initialize(&threads_head); |
} |
173,7 → 173,7 |
if (t) { |
ipl_t ipl; |
spinlock_initialize(&t->lock, "thread_t_lock"); |
spinlock_initialize(&t->lock); |
frame_ks = frame_alloc(FRAME_KA, ONE_FRAME); |
if (THREAD_USER_STACK & flags) { |
/kernel/trunk/generic/src/proc/task.c |
---|
48,7 → 48,7 |
void task_init(void) |
{ |
TASK = NULL; |
spinlock_initialize(&tasks_lock, "tasks_lock"); |
spinlock_initialize(&tasks_lock); |
list_initialize(&tasks_head); |
} |
69,7 → 69,7 |
ta = (task_t *) malloc(sizeof(task_t)); |
if (ta) { |
spinlock_initialize(&ta->lock, "task_ta_lock"); |
spinlock_initialize(&ta->lock); |
list_initialize(&ta->th_head); |
list_initialize(&ta->tasks_link); |
ta->vm = m; |
/kernel/trunk/generic/src/mm/vm.c |
---|
55,7 → 55,7 |
m = (vm_t *) malloc(sizeof(vm_t)); |
if (m) { |
spinlock_initialize(&m->lock, "vm_lock"); |
spinlock_initialize(&m->lock); |
list_initialize(&m->vm_area_head); |
m->asid = asid_get(); |
117,7 → 117,7 |
for (i=0; i<size; i++) |
a->mapping[i] = frame_alloc(0, ONE_FRAME); |
spinlock_initialize(&a->lock, "vm_area_lock"); |
spinlock_initialize(&a->lock); |
link_initialize(&a->link); |
a->type = type; |
/kernel/trunk/generic/src/mm/frame.c |
---|
241,7 → 241,7 |
*/ |
void zone_init(void) |
{ |
spinlock_initialize(&zone_head_lock, "zone_head_lock"); |
spinlock_initialize(&zone_head_lock); |
list_initialize(&zone_head); |
} |
316,7 → 316,7 |
z = (zone_t *) early_malloc(sizeof(zone_t)); |
if (z) { |
link_initialize(&z->link); |
spinlock_initialize(&z->lock, "zone_lock"); |
spinlock_initialize(&z->lock); |
z->base = start; |
z->flags = flags; |
/kernel/trunk/generic/src/mm/tlb.c |
---|
43,7 → 43,7 |
void tlb_init(void) |
{ |
if (config.cpu_active == 1) |
spinlock_initialize(&tlblock, "tlb_lock"); |
spinlock_initialize(&tlblock); |
tlb_init_arch(); |
} |
/kernel/trunk/generic/src/mm/heap.c |
---|
46,7 → 46,7 |
void early_heap_init(__address heap, size_t size) |
{ |
spinlock_initialize(&heaplock, "heap_lock"); |
spinlock_initialize(&heaplock); |
memsetb(heap, size, 0); |
chunk0 = (chunk_t *) heap; |
chunk0->used = 0; |
/kernel/trunk/generic/src/synch/spinlock.c |
---|
33,7 → 33,6 |
#include <preemption.h> |
#include <print.h> |
#include <debug.h> |
#include <symtab.h> |
#ifdef CONFIG_SMP |
43,12 → 42,9 |
* |
* @param sl Pointer to spinlock_t structure. |
*/ |
void spinlock_initialize(spinlock_t *sl, char *name) |
void spinlock_initialize(spinlock_t *sl) |
{ |
sl->val = 0; |
#ifdef CONFIG_DEBUG_SPINLOCK |
sl->name = name; |
#endif |
} |
#ifdef CONFIG_DEBUG_SPINLOCK |
63,18 → 59,12 |
void spinlock_lock(spinlock_t *sl) |
{ |
int i = 0; |
__address caller = ((__address *) &sl)[-1]; |
char *symbol; |
__address caller = ((__u32 *) &sl)[-1]; |
preemption_disable(); |
while (test_and_set(&sl->val)) { |
if (i++ > 300000) { |
printf("cpu%d: looping on spinlock %p:%s, caller=%p", |
CPU->id, sl, sl->name, caller); |
symbol = get_symtab_entry(caller); |
if (symbol) |
printf("(%s)", symbol); |
printf("\n"); |
printf("cpu%d: looping on spinlock %X, caller=%X\n", CPU->id, sl, caller); |
i = 0; |
} |
} |
/kernel/trunk/generic/src/synch/waitq.c |
---|
46,7 → 46,7 |
*/ |
void waitq_initialize(waitq_t *wq) |
{ |
spinlock_initialize(&wq->lock, "waitq_lock"); |
spinlock_initialize(&wq->lock); |
list_initialize(&wq->head); |
wq->missed_wakeups = 0; |
} |
/kernel/trunk/generic/src/synch/rwlock.c |
---|
75,7 → 75,7 |
* @param rwl Reader/Writer lock. |
*/ |
void rwlock_initialize(rwlock_t *rwl) { |
spinlock_initialize(&rwl->lock, "rwlock"); |
spinlock_initialize(&rwl->lock); |
mutex_initialize(&rwl->exclusive); |
rwl->readers_in = 0; |
} |
/kernel/trunk/generic/src/time/timeout.c |
---|
47,7 → 47,7 |
*/ |
void timeout_init(void) |
{ |
spinlock_initialize(&CPU->timeoutlock, "timeout_lock"); |
spinlock_initialize(&CPU->timeoutlock); |
list_initialize(&CPU->timeout_active_head); |
} |
78,7 → 78,7 |
*/ |
void timeout_initialize(timeout_t *t) |
{ |
spinlock_initialize(&t->lock, "timeout_t_lock"); |
spinlock_initialize(&t->lock); |
timeout_reinitialize(t); |
} |