/kernel/trunk/genarch/src/i8042/i8042.c |
---|
30,7 → 30,7 |
* @{ |
*/ |
/** |
* @file |
* @file i8042.c |
* @brief i8042 processor driver. |
* |
* It takes care of low-level keyboard functions. |
/kernel/trunk/generic/include/config.h |
---|
56,12 → 56,14 |
} init_t; |
typedef struct { |
count_t cpu_count; /**< Number of processors detected. */ |
volatile count_t cpu_active; /**< Number of processors that are up and running. */ |
count_t cpu_count; |
volatile count_t cpu_active; |
__address base; |
size_t memory_size; /**< Size of detected memory in bytes. */ |
size_t memory_size; |
size_t kernel_size; /**< Size of memory in bytes taken by kernel and stack */ |
bool mm_initialized; |
} config_t; |
extern config_t config; |
71,3 → 73,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/sysinfo/sysinfo.c |
---|
308,3 → 308,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/proc/task.c |
---|
497,3 → 497,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/proc/thread.c |
---|
615,3 → 615,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/proc/scheduler.c |
---|
26,6 → 26,7 |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genericproc |
* @{ |
*/ |
699,3 → 700,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/proc/the.c |
---|
74,3 → 74,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/as.c |
---|
39,7 → 39,7 |
* Virtual Address Translation (VAT) subsystem. |
* |
* Functionality provided by this file allows one to |
* create address spaces and create, resize and share |
* create address space and create, resize and share |
* address space areas. |
* |
* @see page.c |
78,10 → 78,6 |
#include <syscall/copy.h> |
#include <arch/interrupt.h> |
/** |
* Each architecture decides what functions will be used to carry out |
* address space operations such as creating or locking page tables. |
*/ |
as_operations_t *as_operations = NULL; |
/** This lock protects inactive_as_with_asid_head list. It must be acquired before as_t mutex. */ |
1535,3 → 1531,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/buddy.c |
---|
323,3 → 323,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/frame.c |
---|
1149,5 → 1149,7 |
interrupts_restore(ipl); |
} |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/slab.c |
---|
83,7 → 83,7 |
* The brutal reclaim removes all cached objects, even from CPU-bound |
* magazines. |
* |
* @todo |
* TODO:@n |
* For better CPU-scaling the magazine allocation strategy should |
* be extended. Currently, if the cache does not have magazine, it asks |
* for non-cpu cached magazine cache to provide one. It might be feasible |
93,8 → 93,7 |
* 'empty-magazine-list', which decreases competing for 1 per-system |
* magazine cache. |
* |
* @todo |
* it might be good to add granularity of locks even to slab level, |
* @li it might be good to add granularity of locks even to slab level, |
* we could then try_spinlock over all partial slabs and thus improve |
* scalability even on slab level |
*/ |
910,3 → 909,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/tlb.c |
---|
187,3 → 187,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/backend_anon.c |
---|
207,3 → 207,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/backend_phys.c |
---|
93,3 → 93,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/page.c |
---|
141,3 → 141,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/backend_elf.c |
---|
307,3 → 307,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/ipc/ipc.c |
---|
532,3 → 532,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/ipc/ipcrsc.c |
---|
215,3 → 215,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/ipc/sysipc.c |
---|
594,3 → 594,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/ipc/irq.c |
---|
29,9 → 29,10 |
/** @addtogroup genericipc |
* @{ |
*/ |
/** |
* @file |
* @brief IRQ notification framework. |
/** @file |
*/ |
/** IRQ notification framework |
* |
* This framework allows applications to register to receive a notification |
* when interrupt is detected. The application may provide a simple 'top-half' |
315,7 → 316,7 |
/** Disconnect all irq's notifications |
* |
* @todo It may be better to do some linked list, so that |
* TODO: It may be better to do some linked list, so that |
* we wouldn't need to go through whole array every cleanup |
*/ |
void ipc_irq_cleanup(answerbox_t *box) |
335,3 → 336,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/time/delay.c |
---|
66,3 → 66,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/time/timeout.c |
---|
216,3 → 216,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/time/clock.c |
---|
189,3 → 189,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/main/main.c |
---|
87,7 → 87,9 |
#include <smp/smp.h> |
/** Global configuration structure. */ |
config_t config; |
config_t config = { |
.mm_initialized = false |
}; |
/** Initial user-space tasks */ |
init_t init = { |
96,14 → 98,14 |
context_t ctx; |
/* |
/** |
* These 'hardcoded' variables will be intialized by |
* the linker or the low level assembler code with |
* appropriate sizes and addresses. |
*/ |
__address hardcoded_load_address = 0; /**< Virtual address of where the kernel is loaded. */ |
size_t hardcoded_ktext_size = 0; /**< Size of the kernel code in bytes. */ |
size_t hardcoded_kdata_size = 0; /**< Size of the kernel data in bytes. */ |
__address hardcoded_load_address = 0; |
size_t hardcoded_ktext_size = 0; |
size_t hardcoded_kdata_size = 0; |
void main_bsp(void); |
void main_ap(void); |
199,6 → 201,7 |
as_init(); |
page_init(); |
tlb_init(); |
config.mm_initialized = true; |
arch_post_mm_init(); |
version_print(); |
/kernel/trunk/generic/src/main/version.c |
---|
61,3 → 61,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/lib/func.c |
---|
194,3 → 194,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/lib/elf.c |
---|
223,3 → 223,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/lib/memstr.c |
---|
117,3 → 117,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/lib/sort.c |
---|
201,3 → 201,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/adt/btree.c |
---|
557,7 → 557,7 |
/** Split full B-tree node and insert new key-value-right-subtree triplet. |
* |
* This function will split a node and return a pointer to a newly created |
* This function will split a node and return pointer to a newly created |
* node containing keys greater than or equal to the greater of medians |
* (or median) of the old keys and the newly added key. It will also write |
* the median key to a memory address supplied by the caller. |
1000,3 → 1000,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/adt/hash_table.c |
---|
175,3 → 175,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/adt/bitmap.c |
---|
187,3 → 187,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/adt/list.c |
---|
92,3 → 92,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/condvar.c |
---|
106,3 → 106,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/rwlock.c |
---|
38,8 → 38,7 |
* Or it can be exclusively held by a sole writer at a time. |
* |
* These locks are not recursive. |
* Because a technique called direct hand-off is used and because |
* waiting takes place in a single wait queue, neither readers |
* Because technique called direct hand-off is used, neither readers |
* nor writers will suffer starvation. |
* |
* If there is a writer followed by a reader waiting for the rwlock |
387,3 → 386,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/mutex.c |
---|
80,5 → 80,7 |
semaphore_up(&mtx->sem); |
} |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/spinlock.c |
---|
160,3 → 160,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/semaphore.c |
---|
96,3 → 96,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/waitq.c |
---|
452,3 → 452,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/futex.c |
---|
337,3 → 337,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/interrupt/interrupt.c |
---|
149,5 → 149,7 |
panic("could not register command %s\n", exc_info.name); |
} |
/** @} |
*/ |
/kernel/trunk/generic/src/smp/ipi.c |
---|
68,3 → 68,4 |
/** @} |
*/ |
/kernel/trunk/generic/src/preempt/preemption.c |
---|
58,3 → 58,4 |
/** @} |
*/ |