/kernel/trunk/generic/include/config.h |
---|
56,14 → 56,12 |
} init_t; |
typedef struct { |
count_t cpu_count; |
volatile count_t cpu_active; |
count_t cpu_count; /**< Number of processors detected. */ |
volatile count_t cpu_active; /**< Number of processors that are up and running. */ |
__address base; |
size_t memory_size; |
size_t memory_size; /**< Size of detected memory in bytes. */ |
size_t kernel_size; /**< Size of memory in bytes taken by kernel and stack */ |
bool mm_initialized; |
} config_t; |
extern config_t config; |
73,4 → 71,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/rwlock.c |
---|
38,7 → 38,8 |
* Or it can be exclusively held by a sole writer at a time. |
* |
* These locks are not recursive. |
* Because technique called direct hand-off is used, neither readers |
* Because a technique called direct hand-off is used and because |
* waiting takes place in a single wait queue, neither readers |
* nor writers will suffer starvation. |
* |
* If there is a writer followed by a reader waiting for the rwlock |
386,4 → 387,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/mutex.c |
---|
80,7 → 80,5 |
semaphore_up(&mtx->sem); |
} |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/spinlock.c |
---|
160,4 → 160,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/semaphore.c |
---|
96,4 → 96,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/waitq.c |
---|
452,4 → 452,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/futex.c |
---|
337,4 → 337,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/synch/condvar.c |
---|
106,4 → 106,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/main/main.c |
---|
87,9 → 87,7 |
#include <smp/smp.h> |
/** Global configuration structure. */ |
config_t config = { |
.mm_initialized = false |
}; |
config_t config; |
/** Initial user-space tasks */ |
init_t init = { |
98,14 → 96,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; |
size_t hardcoded_ktext_size = 0; |
size_t hardcoded_kdata_size = 0; |
__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. */ |
void main_bsp(void); |
void main_ap(void); |
201,7 → 199,6 |
as_init(); |
page_init(); |
tlb_init(); |
config.mm_initialized = true; |
arch_post_mm_init(); |
version_print(); |
/kernel/trunk/generic/src/main/version.c |
---|
61,4 → 61,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/sysinfo/sysinfo.c |
---|
308,4 → 308,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/interrupt/interrupt.c |
---|
149,7 → 149,5 |
panic("could not register command %s\n", exc_info.name); |
} |
/** @} |
*/ |
/kernel/trunk/generic/src/time/delay.c |
---|
66,4 → 66,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/time/timeout.c |
---|
216,4 → 216,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/time/clock.c |
---|
189,4 → 189,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/smp/ipi.c |
---|
68,4 → 68,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/proc/scheduler.c |
---|
26,7 → 26,6 |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genericproc |
* @{ |
*/ |
700,4 → 699,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/proc/the.c |
---|
74,4 → 74,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/proc/task.c |
---|
497,4 → 497,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/proc/thread.c |
---|
615,4 → 615,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/lib/elf.c |
---|
223,4 → 223,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/lib/memstr.c |
---|
117,4 → 117,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/lib/sort.c |
---|
201,4 → 201,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/lib/func.c |
---|
194,4 → 194,3 |
/** @} |
*/ |
/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 pointer to a newly created |
* This function will split a node and return a 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,4 → 1000,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/adt/hash_table.c |
---|
175,4 → 175,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/adt/list.c |
---|
92,4 → 92,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/adt/bitmap.c |
---|
187,4 → 187,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/slab.c |
---|
83,7 → 83,7 |
* The brutal reclaim removes all cached objects, even from CPU-bound |
* magazines. |
* |
* TODO:@n |
* @todo |
* 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,7 → 93,8 |
* 'empty-magazine-list', which decreases competing for 1 per-system |
* magazine cache. |
* |
* @li it might be good to add granularity of locks even to slab level, |
* @todo |
* 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 |
*/ |
909,4 → 910,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/tlb.c |
---|
187,4 → 187,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/backend_anon.c |
---|
207,4 → 207,3 |
/** @} |
*/ |
/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 space and create, resize and share |
* create address spaces and create, resize and share |
* address space areas. |
* |
* @see page.c |
78,6 → 78,10 |
#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. */ |
1531,4 → 1535,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/buddy.c |
---|
323,4 → 323,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/backend_phys.c |
---|
93,4 → 93,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/frame.c |
---|
1149,7 → 1149,5 |
interrupts_restore(ipl); |
} |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/page.c |
---|
141,4 → 141,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/mm/backend_elf.c |
---|
307,4 → 307,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/ipc/ipcrsc.c |
---|
215,4 → 215,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/ipc/sysipc.c |
---|
594,4 → 594,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/ipc/ipc.c |
---|
532,4 → 532,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/ipc/irq.c |
---|
29,10 → 29,9 |
/** @addtogroup genericipc |
* @{ |
*/ |
/** @file |
*/ |
/** IRQ notification framework |
/** |
* @file |
* @brief 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' |
316,7 → 315,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) |
336,4 → 335,3 |
/** @} |
*/ |
/kernel/trunk/generic/src/preempt/preemption.c |
---|
58,4 → 58,3 |
/** @} |
*/ |