Changeset c520034 in mainline for kernel/generic/include
- Timestamp:
- 2011-12-31T18:19:35Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 295f658, 77c2b02, 96cd5b4
- Parents:
- 852052d (diff), 22f0561 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- kernel/generic/include
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/align.h
r852052d rc520034 42 42 * 43 43 * @param s Address or size to be aligned. 44 * @param a Size of alignment, must be power of 2.44 * @param a Size of alignment, must be a power of 2. 45 45 */ 46 46 #define ALIGN_DOWN(s, a) ((s) & ~((a) - 1)) … … 50 50 * 51 51 * @param s Address or size to be aligned. 52 * @param a Size of alignment, must be power of 2.52 * @param a Size of alignment, must be a power of 2. 53 53 */ 54 54 #define ALIGN_UP(s, a) (((s) + ((a) - 1)) & ~((a) - 1)) 55 56 /** Check alignment. 57 * 58 * @param s Address or size to be checked for alignment. 59 * @param a Size of alignment, must be a power of 2. 60 */ 61 #define IS_ALIGNED(s, a) (ALIGN_UP((s), (a)) == (s)) 55 62 56 63 #endif -
kernel/generic/include/config.h
r852052d rc520034 74 74 75 75 typedef struct { 76 unsigned int cpu_count; /**< Number of processors detected. */ 77 volatile size_t cpu_active; /**< Number of processors that are up and running. */ 76 /** Number of processors detected. */ 77 unsigned int cpu_count; 78 /** Number of processors that are up and running. */ 79 volatile size_t cpu_active; 78 80 79 81 uintptr_t base; 80 size_t kernel_size; /**< Size of memory in bytes taken by kernel and stack */ 82 /** Size of memory in bytes taken by kernel and stack. */ 83 size_t kernel_size; 81 84 82 uintptr_t stack_base; /**< Base adddress of initial stack */ 83 size_t stack_size; /**< Size of initial stack */ 85 /** Base adddress of initial stack. */ 86 uintptr_t stack_base; 87 /** Size of initial stack. */ 88 size_t stack_size; 89 90 bool identity_configured; 91 /** Base address of the kernel identity mapped memory. */ 92 uintptr_t identity_base; 93 /** Size of the kernel identity mapped memory. */ 94 size_t identity_size; 95 96 bool non_identity_configured; 97 98 /** End of physical memory. */ 99 uint64_t physmem_end; 84 100 } config_t; 85 101 -
kernel/generic/include/macros.h
r852052d rc520034 77 77 #endif /* __ASM__ */ 78 78 79 #define ispwr2(x) (((x) & ((x) - 1)) == 0) 80 79 81 #define isdigit(d) (((d) >= '0') && ((d) <= '9')) 80 82 #define islower(c) (((c) >= 'a') && ((c) <= 'z')) -
kernel/generic/include/mm/frame.h
r852052d rc520034 50 50 typedef uint8_t frame_flags_t; 51 51 52 #define FRAME_NONE 0x0 52 53 /** Convert the frame address to kernel VA. */ 53 54 #define FRAME_KA 0x1 … … 58 59 /** Do not reserve / unreserve memory. */ 59 60 #define FRAME_NO_RESERVE 0x8 61 /** Allocate a frame which can be identity-mapped. */ 62 #define FRAME_LOWMEM 0x10 63 /** Allocate a frame which cannot be identity-mapped. */ 64 #define FRAME_HIGHMEM 0x20 60 65 61 66 typedef uint8_t zone_flags_t; 62 67 68 #define ZONE_NONE 0x0 63 69 /** Available zone (free for allocation) */ 64 #define ZONE_AVAILABLE 0x 070 #define ZONE_AVAILABLE 0x1 65 71 /** Zone is reserved (not available for allocation) */ 66 #define ZONE_RESERVED 0x 872 #define ZONE_RESERVED 0x2 67 73 /** Zone is used by firmware (not available for allocation) */ 68 #define ZONE_FIRMWARE 0x10 74 #define ZONE_FIRMWARE 0x4 75 /** Zone contains memory that can be identity-mapped */ 76 #define ZONE_LOWMEM 0x8 77 /** Zone contains memory that cannot be identity-mapped */ 78 #define ZONE_HIGHMEM 0x10 69 79 70 /** Currently there is no equivalent zone flags 71 for frame flags */ 72 #define FRAME_TO_ZONE_FLAGS(frame_flags) 0 80 /** Mask of zone bits that must be matched exactly. */ 81 #define ZONE_EF_MASK 0x7 82 83 #define FRAME_TO_ZONE_FLAGS(ff) \ 84 ((((ff) & FRAME_LOWMEM) ? ZONE_LOWMEM : \ 85 (((ff) & FRAME_HIGHMEM) ? ZONE_HIGHMEM : ZONE_NONE)) | \ 86 (ZONE_AVAILABLE | ZONE_LOWMEM /* | ZONE_HIGHMEM */)) 87 88 #define ZONE_FLAGS_MATCH(zf, f) \ 89 (((((zf) & ZONE_EF_MASK)) == ((f) & ZONE_EF_MASK)) && \ 90 (((zf) & ~ZONE_EF_MASK) & (f))) 73 91 74 92 typedef struct { 75 93 size_t refcount; /**< Tracking of shared frames */ 76 uint8_t buddy_order; /**< Buddy system block order */77 94 link_t buddy_link; /**< Link to the next free block inside 78 95 one order */ 79 96 void *parent; /**< If allocated by slab, this points there */ 97 uint8_t buddy_order; /**< Buddy system block order */ 80 98 } frame_t; 81 99 … … 129 147 } 130 148 131 NO_TRACE static inline bool zone_flags_available(zone_flags_t flags)132 {133 return ((flags & (ZONE_RESERVED | ZONE_FIRMWARE)) == 0);134 }135 136 149 #define IS_BUDDY_ORDER_OK(index, order) \ 137 150 ((~(((sysarg_t) -1) << (order)) & (index)) == 0) … … 146 159 147 160 extern void frame_init(void); 161 extern bool frame_adjust_zone_bounds(bool, uintptr_t *, size_t *); 148 162 extern void *frame_alloc_generic(uint8_t, frame_flags_t, size_t *); 149 163 extern void *frame_alloc(uint8_t, frame_flags_t); … … 161 175 extern void frame_mark_unavailable(pfn_t, size_t); 162 176 extern size_t zone_conf_size(size_t); 177 extern pfn_t zone_external_conf_alloc(size_t); 163 178 extern bool zone_merge(size_t, size_t); 164 179 extern void zone_merge_all(void); -
kernel/generic/include/mm/page.h
r852052d rc520034 49 49 void (* mapping_remove)(as_t *, uintptr_t); 50 50 pte_t *(* mapping_find)(as_t *, uintptr_t, bool); 51 void (* mapping_make_global)(uintptr_t, size_t); 51 52 } page_mapping_operations_t; 52 53 … … 60 61 extern void page_mapping_remove(as_t *, uintptr_t); 61 62 extern pte_t *page_mapping_find(as_t *, uintptr_t, bool); 63 extern void page_mapping_make_global(uintptr_t, size_t); 62 64 extern pte_t *page_table_create(unsigned int); 63 65 extern void page_table_destroy(pte_t *);
Note:
See TracChangeset
for help on using the changeset viewer.