feat: Add Process Manager, Limine Framebuffer GUI, RTL8139 Net stack, and extended UNIX commands
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
#pragma once
|
||||
#include "stdint.h"
|
||||
#include "stddef.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// 32-bit ARGB Color Palette Helpers
|
||||
#define FB_COLOR(r, g, b) (((uint32_t)(r) << 16) | ((uint32_t)(g) << 8) | (uint32_t)(b))
|
||||
#define FB_BLACK FB_COLOR(15, 17, 23)
|
||||
#define FB_WHITE FB_COLOR(240, 246, 252)
|
||||
#define FB_DARK_GRAY FB_COLOR(33, 38, 45)
|
||||
#define FB_LIGHT_GRAY FB_COLOR(139, 148, 158)
|
||||
#define FB_BLUE FB_COLOR(88, 166, 255)
|
||||
#define FB_NAVY FB_COLOR(22, 27, 34)
|
||||
#define FB_GREEN FB_COLOR(63, 185, 80)
|
||||
#define FB_RED FB_COLOR(248, 81, 73)
|
||||
#define FB_ORANGE FB_COLOR(210, 153, 34)
|
||||
#define FB_PURPLE FB_COLOR(188, 140, 255)
|
||||
#define FB_CYAN FB_COLOR(56, 189, 248)
|
||||
|
||||
typedef struct {
|
||||
uint32_t *buffer;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t pitch;
|
||||
uint32_t bpp;
|
||||
int is_initialized;
|
||||
} fb_context_t;
|
||||
|
||||
extern fb_context_t g_fb;
|
||||
|
||||
// Framebuffer API
|
||||
int fb_init(void);
|
||||
void fb_clear(uint32_t color);
|
||||
void fb_draw_pixel(int x, int y, uint32_t color);
|
||||
void fb_fill_rect(int x, int y, int w, int h, uint32_t color);
|
||||
void fb_draw_rect(int x, int y, int w, int h, uint32_t color);
|
||||
void fb_draw_char(int x, int y, char c, uint32_t fg, uint32_t bg);
|
||||
void fb_draw_string(int x, int y, const char *str, uint32_t fg, uint32_t bg);
|
||||
void fb_draw_window(int x, int y, int w, int h, const char *title);
|
||||
void fb_demo_desktop(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
#include "stdint.h"
|
||||
|
||||
// Standard 8x16 VGA bitmap font for characters 32 (' ') to 127
|
||||
// Each character is 16 bytes (1 byte per row, 8 bits wide)
|
||||
extern const uint8_t font8x16_data[96][16];
|
||||
@@ -0,0 +1,31 @@
|
||||
#pragma once
|
||||
#include "stdint.h"
|
||||
#include "stddef.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
uint16_t io_base;
|
||||
uint8_t mac[6];
|
||||
uint8_t rx_buffer[8192 + 16 + 1500] __attribute__((aligned(4)));
|
||||
uint8_t tx_buffers[4][1536] __attribute__((aligned(4)));
|
||||
uint8_t tx_cur;
|
||||
int is_initialized;
|
||||
uint64_t rx_packets;
|
||||
uint64_t tx_packets;
|
||||
uint64_t rx_bytes;
|
||||
uint64_t tx_bytes;
|
||||
} rtl8139_dev_t;
|
||||
|
||||
extern rtl8139_dev_t g_rtl8139;
|
||||
|
||||
// RTL8139 API
|
||||
int rtl8139_init(void);
|
||||
int rtl8139_send_packet(const void *data, uint16_t len);
|
||||
int rtl8139_poll_packet(void *out_buf, uint16_t max_len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user