Changeset b3f8fb7 in mainline for kernel/generic/src
- Timestamp:
- 2007-01-28T13:25:49Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8e8c1a5
- Parents:
- 1ba41c5
- Location:
- kernel/generic/src
- Files:
-
- 32 edited
-
adt/bitmap.c (modified) (1 diff)
-
adt/btree.c (modified) (1 diff)
-
adt/hash_table.c (modified) (1 diff)
-
console/cmd.c (modified) (1 diff)
-
console/console.c (modified) (1 diff)
-
console/kconsole.c (modified) (1 diff)
-
cpu/cpu.c (modified) (1 diff)
-
ddi/device.c (modified) (1 diff)
-
ddi/irq.c (modified) (1 diff)
-
debug/symtab.c (modified) (1 diff)
-
lib/elf.c (modified) (1 diff)
-
lib/func.c (modified) (1 diff)
-
main/kinit.c (modified) (1 diff)
-
main/main.c (modified) (2 diffs)
-
mm/as.c (modified) (3 diffs)
-
mm/backend_anon.c (modified) (1 diff)
-
mm/backend_elf.c (modified) (1 diff)
-
mm/backend_phys.c (modified) (1 diff)
-
mm/buddy.c (modified) (1 diff)
-
mm/frame.c (modified) (1 diff)
-
mm/page.c (modified) (1 diff)
-
mm/tlb.c (modified) (2 diffs)
-
proc/scheduler.c (modified) (2 diffs)
-
proc/task.c (modified) (1 diff)
-
proc/the.c (modified) (1 diff)
-
proc/thread.c (modified) (2 diffs)
-
security/cap.c (modified) (1 diff)
-
synch/condvar.c (modified) (1 diff)
-
synch/rwlock.c (modified) (1 diff)
-
synch/waitq.c (modified) (3 diffs)
-
syscall/copy.c (modified) (1 diff)
-
time/timeout.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/adt/bitmap.c
r1ba41c5 rb3f8fb7 39 39 40 40 #include <adt/bitmap.h> 41 #include <typedefs.h>42 41 #include <arch/types.h> 43 42 #include <align.h> -
kernel/generic/src/adt/btree.c
r1ba41c5 rb3f8fb7 52 52 #include <debug.h> 53 53 #include <panic.h> 54 #include <typedefs.h>55 54 #include <print.h> 56 55 -
kernel/generic/src/adt/hash_table.c
r1ba41c5 rb3f8fb7 40 40 #include <adt/hash_table.h> 41 41 #include <adt/list.h> 42 #include <typedefs.h>43 42 #include <arch/types.h> 44 43 #include <debug.h> -
kernel/generic/src/console/cmd.c
r1ba41c5 rb3f8fb7 46 46 #include <print.h> 47 47 #include <panic.h> 48 #include <typedefs.h>49 48 #include <arch/types.h> 50 49 #include <adt/list.h> -
kernel/generic/src/console/console.c
r1ba41c5 rb3f8fb7 39 39 #include <synch/spinlock.h> 40 40 #include <arch/types.h> 41 #include <typedefs.h>42 41 #include <arch.h> 43 42 #include <func.h> -
kernel/generic/src/console/kconsole.c
r1ba41c5 rb3f8fb7 44 44 #include <print.h> 45 45 #include <panic.h> 46 #include <typedefs.h>47 46 #include <arch/types.h> 48 47 #include <adt/list.h> -
kernel/generic/src/cpu/cpu.c
r1ba41c5 rb3f8fb7 45 45 #include <config.h> 46 46 #include <panic.h> 47 #include <typedefs.h>48 47 #include <memstr.h> 49 48 #include <adt/list.h> -
kernel/generic/src/ddi/device.c
r1ba41c5 rb3f8fb7 39 39 #include <atomic.h> 40 40 #include <debug.h> 41 #include <typedefs.h>42 41 43 42 static atomic_t last; -
kernel/generic/src/ddi/irq.c
r1ba41c5 rb3f8fb7 70 70 #include <adt/hash_table.h> 71 71 #include <arch/types.h> 72 #include <typedefs.h>73 72 #include <synch/spinlock.h> 74 73 #include <arch.h> -
kernel/generic/src/debug/symtab.c
r1ba41c5 rb3f8fb7 37 37 38 38 #include <symtab.h> 39 #include <typedefs.h>40 39 #include <arch/byteorder.h> 41 40 #include <func.h> -
kernel/generic/src/lib/elf.c
r1ba41c5 rb3f8fb7 40 40 #include <debug.h> 41 41 #include <arch/types.h> 42 #include <typedefs.h>43 42 #include <mm/as.h> 44 43 #include <mm/frame.h> -
kernel/generic/src/lib/func.c
r1ba41c5 rb3f8fb7 41 41 #include <arch/asm.h> 42 42 #include <arch.h> 43 #include <typedefs.h>44 43 #include <console/kconsole.h> 45 44 -
kernel/generic/src/main/kinit.c
r1ba41c5 rb3f8fb7 63 63 #include <security/cap.h> 64 64 #include <lib/rd.h> 65 #include <ipc/ipc.h> 65 66 66 67 #ifdef CONFIG_SMP -
kernel/generic/src/main/main.c
r1ba41c5 rb3f8fb7 54 54 #include <config.h> 55 55 #include <time/clock.h> 56 #include <time/timeout.h> 56 57 #include <proc/scheduler.h> 57 58 #include <proc/thread.h> … … 75 76 #include <arch.h> 76 77 #include <arch/faddr.h> 77 #include <typedefs.h>78 78 #include <ipc/ipc.h> 79 79 #include <macros.h> -
kernel/generic/src/mm/as.c
r1ba41c5 rb3f8fb7 75 75 #include <align.h> 76 76 #include <arch/types.h> 77 #include <typedefs.h>78 77 #include <syscall/copy.h> 79 78 #include <arch/interrupt.h> … … 169 168 as->refcount = 0; 170 169 as->cpu_refcount = 0; 170 #ifdef AS_PAGE_TABLE 171 171 as->page_table = page_table_create(flags); 172 #else 173 page_table_create(flags); 174 #endif 172 175 173 176 return as; … … 217 220 218 221 btree_destroy(&as->as_area_btree); 222 #ifdef AS_PAGE_TABLE 219 223 page_table_destroy(as->page_table); 224 #else 225 page_table_destroy(NULL); 226 #endif 220 227 221 228 interrupts_restore(ipl); -
kernel/generic/src/mm/backend_anon.c
r1ba41c5 rb3f8fb7 48 48 #include <errno.h> 49 49 #include <arch/types.h> 50 #include <typedefs.h>51 50 #include <align.h> 52 51 #include <arch.h> -
kernel/generic/src/mm/backend_elf.c
r1ba41c5 rb3f8fb7 39 39 #include <debug.h> 40 40 #include <arch/types.h> 41 #include <typedefs.h>42 41 #include <mm/as.h> 43 42 #include <mm/frame.h> -
kernel/generic/src/mm/backend_phys.c
r1ba41c5 rb3f8fb7 38 38 #include <debug.h> 39 39 #include <arch/types.h> 40 #include <typedefs.h>41 40 #include <mm/as.h> 42 41 #include <mm/frame.h> -
kernel/generic/src/mm/buddy.c
r1ba41c5 rb3f8fb7 43 43 #include <mm/frame.h> 44 44 #include <arch/types.h> 45 #include <typedefs.h>46 #include <adt/list.h>47 45 #include <debug.h> 48 46 #include <print.h> -
kernel/generic/src/mm/frame.c
r1ba41c5 rb3f8fb7 52 52 */ 53 53 54 #include <typedefs.h>55 54 #include <arch/types.h> 56 55 #include <mm/frame.h> -
kernel/generic/src/mm/page.c
r1ba41c5 rb3f8fb7 47 47 #include <mm/frame.h> 48 48 #include <arch/types.h> 49 #include <typedefs.h>50 49 #include <arch/asm.h> 51 50 #include <memstr.h> -
kernel/generic/src/mm/tlb.c
r1ba41c5 rb3f8fb7 45 45 #include <smp/ipi.h> 46 46 #include <synch/spinlock.h> 47 #include <typedefs.h>48 47 #include <atomic.h> 49 48 #include <arch/interrupt.h> … … 52 51 #include <panic.h> 53 52 #include <debug.h> 53 #include <cpu.h> 54 54 55 55 /** -
kernel/generic/src/proc/scheduler.c
r1ba41c5 rb3f8fb7 45 45 #include <mm/page.h> 46 46 #include <mm/as.h> 47 #include <time/timeout.h> 47 48 #include <time/delay.h> 48 49 #include <arch/asm.h> … … 53 54 #include <config.h> 54 55 #include <context.h> 56 #include <fpu_context.h> 55 57 #include <func.h> 56 58 #include <arch.h> 57 59 #include <adt/list.h> 58 60 #include <panic.h> 59 #include <typedefs.h>60 61 #include <cpu.h> 61 62 #include <print.h> -
kernel/generic/src/proc/task.c
r1ba41c5 rb3f8fb7 364 364 365 365 if (sleeping) 366 waitq_interrupt_sleep(thr);366 thread_interrupt_sleep(thr); 367 367 } 368 368 -
kernel/generic/src/proc/the.c
r1ba41c5 rb3f8fb7 43 43 44 44 #include <arch.h> 45 #include <typedefs.h>46 45 47 46 -
kernel/generic/src/proc/thread.c
r1ba41c5 rb3f8fb7 54 54 #include <adt/btree.h> 55 55 #include <adt/list.h> 56 #include <typedefs.h>57 56 #include <time/clock.h> 57 #include <time/timeout.h> 58 58 #include <config.h> 59 59 #include <arch/interrupt.h> … … 679 679 } 680 680 681 /** Interrupt sleeping thread. 682 * 683 * This routine attempts to interrupt a thread from its sleep in a waitqueue. 684 * If the thread is not found sleeping, no action is taken. 685 * 686 * @param t Thread to be interrupted. 687 */ 688 void thread_interrupt_sleep(thread_t *t) 689 { 690 waitq_t *wq; 691 bool do_wakeup = false; 692 ipl_t ipl; 693 694 ipl = interrupts_disable(); 695 spinlock_lock(&threads_lock); 696 if (!thread_exists(t)) 697 goto out; 698 699 grab_locks: 700 spinlock_lock(&t->lock); 701 if ((wq = t->sleep_queue)) { /* assignment */ 702 if (!(t->sleep_interruptible)) { 703 /* 704 * The sleep cannot be interrupted. 705 */ 706 spinlock_unlock(&t->lock); 707 goto out; 708 } 709 710 if (!spinlock_trylock(&wq->lock)) { 711 spinlock_unlock(&t->lock); 712 goto grab_locks; /* avoid deadlock */ 713 } 714 715 if (t->timeout_pending && timeout_unregister(&t->sleep_timeout)) 716 t->timeout_pending = false; 717 718 list_remove(&t->wq_link); 719 t->saved_context = t->sleep_interruption_context; 720 do_wakeup = true; 721 t->sleep_queue = NULL; 722 spinlock_unlock(&wq->lock); 723 } 724 spinlock_unlock(&t->lock); 725 726 if (do_wakeup) 727 thread_ready(t); 728 729 out: 730 spinlock_unlock(&threads_lock); 731 interrupts_restore(ipl); 732 } 733 681 734 /** @} 682 735 */ -
kernel/generic/src/security/cap.c
r1ba41c5 rb3f8fb7 44 44 #include <syscall/copy.h> 45 45 #include <arch.h> 46 #include <typedefs.h>47 46 #include <errno.h> 48 47 -
kernel/generic/src/synch/condvar.c
r1ba41c5 rb3f8fb7 41 41 #include <synch/synch.h> 42 42 #include <arch.h> 43 #include <typedefs.h>44 43 45 44 /** Initialize condition variable. -
kernel/generic/src/synch/rwlock.c
r1ba41c5 rb3f8fb7 64 64 #include <synch/synch.h> 65 65 #include <adt/list.h> 66 #include <typedefs.h>67 66 #include <arch/asm.h> 68 67 #include <arch.h> -
kernel/generic/src/synch/waitq.c
r1ba41c5 rb3f8fb7 50 50 #include <arch/asm.h> 51 51 #include <arch/types.h> 52 #include <typedefs.h>53 52 #include <time/timeout.h> 54 53 #include <arch.h> … … 118 117 } 119 118 120 /** Interrupt sleeping thread.121 *122 * This routine attempts to interrupt a thread from its sleep in a waitqueue.123 * If the thread is not found sleeping, no action is taken.124 *125 * @param t Thread to be interrupted.126 */127 void waitq_interrupt_sleep(thread_t *t)128 {129 waitq_t *wq;130 bool do_wakeup = false;131 ipl_t ipl;132 133 ipl = interrupts_disable();134 spinlock_lock(&threads_lock);135 if (!thread_exists(t))136 goto out;137 138 grab_locks:139 spinlock_lock(&t->lock);140 if ((wq = t->sleep_queue)) { /* assignment */141 if (!(t->sleep_interruptible)) {142 /*143 * The sleep cannot be interrupted.144 */145 spinlock_unlock(&t->lock);146 goto out;147 }148 149 if (!spinlock_trylock(&wq->lock)) {150 spinlock_unlock(&t->lock);151 goto grab_locks; /* avoid deadlock */152 }153 154 if (t->timeout_pending && timeout_unregister(&t->sleep_timeout))155 t->timeout_pending = false;156 157 list_remove(&t->wq_link);158 t->saved_context = t->sleep_interruption_context;159 do_wakeup = true;160 t->sleep_queue = NULL;161 spinlock_unlock(&wq->lock);162 }163 spinlock_unlock(&t->lock);164 165 if (do_wakeup)166 thread_ready(t);167 168 out:169 spinlock_unlock(&threads_lock);170 interrupts_restore(ipl);171 }172 119 173 120 /** Sleep until either wakeup, timeout or interruption occurs … … 426 373 * (the link belongs to the wait queue), but because 427 374 * of synchronization with waitq_timeouted_sleep() 428 * and waitq_interrupt_sleep().375 * and thread_interrupt_sleep(). 429 376 * 430 377 * In order for these two functions to work, the following -
kernel/generic/src/syscall/copy.c
r1ba41c5 rb3f8fb7 45 45 #include <arch.h> 46 46 #include <errno.h> 47 #include <typedefs.h>48 47 49 48 /** Copy data from userspace to kernel. -
kernel/generic/src/time/timeout.c
r1ba41c5 rb3f8fb7 37 37 38 38 #include <time/timeout.h> 39 #include <typedefs.h>40 39 #include <arch/types.h> 41 40 #include <config.h>
Note:
See TracChangeset
for help on using the changeset viewer.
