PatchworkOS  2ca1c69
A non-POSIX operating system.
Loading...
Searching...
No Matches
Todo List
Global _file_flush_buffer (FILE *stream)
Text stream conversion here
Global _time_zone_init (void)
Load time zone from a configuration file.
Struct _time_zone_t
Time zone handling is not compliant with the c standard (for now). Daylight savings time.
Struct acpi_device_cfg_t
Add more config stuff like memory ranges, DMA etc.
Global aml_data_ref_object_read (aml_term_list_ctx_t *ctx, aml_object_t *out)
Implement ObjectReference handling... somehow. I honestly have no clue what the spec wants you to do here. But everything seems to work fine by only reading DataObjects for now.
Struct aml_event_t
Implement event object functionality.
Global aml_field_unit_access (aml_state_t *state, aml_field_unit_t *fieldUnit, aml_object_t *data, aml_access_direction_t direction)
"An Operation Region object implicitly supports Mutex synchronization. Updates to the object, or a Field data object for the region, will automatically synchronize on the Operation Region object;" - Section 19.6.100
Global aml_osi_implementation (aml_method_t *method, aml_object_t **args, uint64_t argCount)
Implement _OSI strings properly. For now, we just return true for everything.
Global aml_patch_up_resolve_all (void)
I am still not sure when would be the best time to call this function, for now its called after the DSDT and all SSDTs have been loaded, i am quite sure that we will end up getting issues with unresolved references due to this, but instead of trying to solve that now, we will just fix it as issues arise.
Global aml_predefined_init (void)
Implement _GL properly.
Global aml_reference_type_opcode_read (aml_term_list_ctx_t *ctx)
Stare at the spec some more.
Global atof (const char *nptr)
Finish this implementation, missing NAN, INF 0x/0X handling.
Struct cnd_t
Implement user space cnd_t and tss_t.
Global domains
Optimize domain lookup?
Global dwm_next_timer (void)
Optimize this function to avoid iterating over all surfaces every time.
Global event_type_t
Global events are a security mess, when per-process namespaces stabilize we should consider if this could be done better.
Global exception_handler (interrupt_frame_t *frame)
Handle NMIs properly.
Global fread (void *_RESTRICT ptr, size_t size, size_t nmemb, FILE *_RESTRICT stream)
For better performance, read block-wise, not byte-wise.
Global fwrite (const void *_RESTRICT ptr, size_t size, size_t nmemb, FILE *_RESTRICT stream)
For better performance, write block-wise, not byte-wise.
Global interactive_handle_ansi (interactive_state_t *state, ansi_result_t *result)
Implement tab completion
Global io_reserve (port_t *out, port_t minBase, port_t maxBase, uint64_t alignment, uint64_t length, const char *owner)
Find a way to store the owner of each reservation that does not use way to much memory, and isent super slow.
Global irq_virt_alloc (irq_virt_t *out, irq_phys_t phys, irq_flags_t flags, cpu_t *cpu)
CPU load balancing?
Module kernel_cpu
Implement per-CPU data. Use separate linker section?
Module kernel_cpu_irq
Currently, this system is still simplistic. For example, it cant handle trees of IRQ chips, or multiple chips handling the same physical IRQs. This should be fixed in the future as needed.
Module kernel_fs_inode
Implement actually writing/syncing dirty inodes, for now inodes should use the notify functions but they will never actually be "cleaned."
Module kernel_ipc_note
Receiving notes, software interrupts, etc.
Module kernel_module
Currently module symbols and device types are cached in memory after the first load, for now this is fine. But in the future this cache could become very large so we might need a Linux-style cache file on disk or atleast a way to invalidate the cache.
Module kernel_utils_map
Dynamically sized keys without heap allocation?
Module kernel_utils_rbtree
Cache minimum and maximum nodes for O(1) access.
Struct keymap_entry_t
Use the configuration system for keymaps
Module libpatchwork_config
The current system is rather simplistic and in the future it might, if i can be bothered, be worth implementing a database like configuration system.
Module libstd_heap
Implement a slab allocator.
Module libstd_setjmp
Add signal handling and 100 other things later.
Module module_drivers_ps2_mouse
Implement scrolling and buttons 4 and 5.
Module modules_acpi_devices
Implement hotplugging support.
Global PATH_VALID_CHAR (ch)
Replace with array lookup.
Global rbtree_fix (rbtree_t *tree, rbnode_t *node)
Currently just calls rbtree_remove() followed by rbtree_insert(), could be optimized?
Global rbtree_update_to_root (rbtree_t *tree, rbnode_t *node)
This could be optimized to avoid updating nodes multiple times for overlapping paths.
Global sched_yield (void)
Currently not implemented as we cant really yield as that would break fairness. Maybe we could pretend to leave and re-enter?
Global space_tlb_shootdown (space_t *space, void *virtAddr, uint64_t pageAmount)
Currently this does a busy wait for acknowledgements. Use a wait queue?
Global terminal_execute_ansi (terminal_t *term, element_t *elem, drawable_t *draw, ansi_sending_t *ansi)
Implement support for more advanced color stuff
Global WINDOW_RESIZABLE
Implement resize handles.