|
Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
|
Go to the source code of this file.
Data Structures | |
| struct | slab |
| struct | slab_cache |
Functions | |
| struct slab | __attribute__ ((aligned(64))) |
| void | vxCreateSlabCache (struct slab_cache **cache, const char *name, const size_t obj_size, size_t alignment, const uintptr_t virt_addr) |
| void | slab_cache_destroy (struct slab_cache **cache) |
| void * | vxSlabAlloc (struct slab_cache *cache) |
| void | slab_free (struct slab_cache *cache, void *obj) |
| void | slab_cache_stats (struct slab_cache *cache, size_t *total_objs, size_t *used_objs, size_t *free_objs) |
Variables | |
| uint32_t | magic |
| struct slab * | next |
| void * | first_obj |
| void * | free_list |
| size_t | total_objects |
| size_t | free_objects |
| uintptr_t | phys_addr |
| spinlock_t | lock |
| char | name [32] |
| size_t | obj_size |
| size_t | actual_obj_size |
| size_t | alignment |
| size_t | slab_size |
| struct slab * | slabs_full |
| struct slab * | slabs_partial |
| struct slab * | slabs_free |
| size_t | total_slabs |
| uintptr_t | current_virt_addr |
| boolean_t | default_virt_addr |
| void slab_cache_destroy | ( | struct slab_cache ** | cache | ) |
Definition at line 174 of file slab.c.
References cache, next, slab::next, NULL, paging_get_highest_page_map(), paging_unmap_page(), phys_addr, slab::phys_addr, push_freed_vaddr(), spin_acquire(), spin_release(), and vxPhysBaseFree().
| void slab_cache_stats | ( | struct slab_cache * | cache, |
| size_t * | total_objs, | ||
| size_t * | used_objs, | ||
| size_t * | free_objs ) |
References cache.
| void slab_free | ( | struct slab_cache * | cache, |
| void * | obj ) |
Definition at line 235 of file slab.c.
References cache, slab::first_obj, slab::free_list, slab::free_objects, slab::next, NULL, prev, spin_acquire(), spin_release(), and slab::total_objects.
Referenced by __attribute__(), dentry_free_rcu(), free_netbuff(), and vma_tree_add_locked().
| void vxCreateSlabCache | ( | struct slab_cache ** | cache, |
| const char * | name, | ||
| const size_t | obj_size, | ||
| size_t | alignment, | ||
| const uintptr_t | virt_addr ) |
Definition at line 44 of file slab.c.
References ALIGN_UP, alignment, BLOCK_SIZE, cache, get_default_slab_addr(), LOG_INFO, memset(), name, obj_size, paging_get_highest_page_map(), phys_addr, phys_base_alloc(), strcpy(), and vxMmap().
Referenced by __attribute__(), INIT(), INIT(), INIT(), INIT(), INIT(), INIT(), INIT(), INIT(), INIT(), and vxSocket().
| void * vxSlabAlloc | ( | struct slab_cache * | cache | ) |
Definition at line 93 of file slab.c.
References actual_obj_size, BLOCK_SIZE, cache, slab::first_obj, slab::free_list, slab::free_objects, get_default_slab_addr(), LOG_ERROR, slab::magic, memset(), slab::next, NULL, paging_get_highest_page_map(), phys_addr, slab::phys_addr, phys_base_alloc(), spin_acquire(), spin_release(), slab::total_objects, and vxMmap().
Referenced by __attribute__(), create_netbuff(), create_netdev(), create_process(), create_vmm_page(), INIT(), INIT(), thrCreateInstance(), vma_register(), vma_tree_add_locked(), vxAllocScheduler(), and vxSocket().
| size_t actual_obj_size |
Definition at line 3 of file slab.h.
Referenced by vxSlabAlloc().
| size_t alignment |
Definition at line 4 of file slab.h.
Referenced by vxCreateSlabCache().
| spinlock_t lock |
| size_t obj_size |
Definition at line 2 of file slab.h.
Referenced by vxCreateSlabCache().
| uintptr_t phys_addr |
Definition at line 6 of file slab.h.
Referenced by __attribute__(), acpi_map_phys_page(), elf_mmap_got(), mem_create_physwindow(), slab_cache_destroy(), VirtioGpu::virtq_add_buf(), VirtioGpu::virtq_init(), vxCreateSlabCache(), and vxSlabAlloc().