Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .build
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2230
2329
5 changes: 5 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ $(ISO): limine.conf $(LIMINE_TOOL) buildgen $(BUILD_DIR)/kernel.elf disk userspa
@cp -r src/userspace/apps/filemanager/fm.elf $(DISK_DIR)/rd/emr/system/
@cp -r src/userspace/apps/template/template.elf $(DISK_DIR)/rd/emr/system/
@cp -r src/userspace/apps/gears/gears.elf $(DISK_DIR)/rd/bin/gears.elf
@cp -r src/userspace/apps/doom/doom.elf $(DISK_DIR)/rd/bin/doom.elf
@cp -r src/userspace/apps/doom/doom1.wad $(DISK_DIR)/rd/bin/doom1.wad

@echo "[MK] copying other binarys..."
# delete those using make binclean
Expand All @@ -111,6 +113,7 @@ $(ISO): limine.conf $(LIMINE_TOOL) buildgen $(BUILD_DIR)/kernel.elf disk userspa
@cp src/userspace/bin/ps/ps.elf $(DISK_DIR)/rd/bin/
@cp src/userspace/bin/meminfo/meminfo.elf $(DISK_DIR)/rd/bin/
@cp src/userspace/bin/dofetch/dofetch.elf $(DISK_DIR)/rd/bin/
@cp src/userspace/apps/test_libc/test_libc.emx/app.elf $(DISK_DIR)/rd/bin/test_libc.elf

# libs arent copied anymore due merge conflicts in prs
#@echo "[MK] copying libs..."
Expand Down Expand Up @@ -210,6 +213,8 @@ binclean:
@rm -f $(DISK_DIR)/rd/emr/system/desktop.elf
@rm -f $(DISK_DIR)/rd/emr/system/login.elf
@rm -f $(DISK_DIR)/rd/emr/system/gears.elf
@rm -f $(DISK_DIR)/rd/bin/doom.elf
@rm -f $(DISK_DIR)/rd/bin/doom1.wad
@rm -f $(DISK_DIR)/rd/emr/system/libraries/cursor.elf
@rm -f $(DISK_DIR)/rd/emr/system/libraries/libemxfb0.a
@rm -f $(DISK_DIR)/rd/emr/system/libraries/libfont8x12.a
Expand Down
Binary file modified dsk/rd/emr/system/fm.elf
Binary file not shown.
Binary file modified dsk/rd/emr/system/sysinfo.elf
Binary file not shown.
Binary file modified dsk/rd/emr/system/template.elf
Binary file not shown.
Binary file modified dsk/rd/emr/system/terminal.emx/app.elf
Binary file not shown.
2 changes: 1 addition & 1 deletion shared/ebuild.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#pragma once
// this file will always be regenerated when building emexOS
// if you want to disable it goto /tools/genbuild.sh
#define ___EMEX_BUILD "26MY.01.2230"
#define ___EMEX_BUILD "26MY.01.2329"
2 changes: 2 additions & 0 deletions shared/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ typedef signed long i64;

typedef unsigned long size_t;
typedef long ssize_t;
typedef long off_t;


typedef u8 uint8_t;
typedef u16 uint16_t;
Expand Down
27 changes: 27 additions & 0 deletions src/kernel/file_systems/vfs/commands.c
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,33 @@ ssize_t fs_write(int fd, const void *buf, size_t cnt) {
return file->node->ops->write(file, buf, cnt);
}

off_t fs_lseek(int fd, off_t offset, int whence) {
fs_file *file = fs_get_file(fd);
if (!file)
return -1;

off_t new_pos = file->pos;
switch (whence) {
case SEEK_SET:
new_pos = offset;
break;
case SEEK_CUR:
new_pos += offset;
break;
case SEEK_END:
new_pos = (off_t)file->node->size + offset;
break;
default:
return -1;
}

if (new_pos < 0)
return -1;

file->pos = (u64)new_pos;
return new_pos;
}

int fs_mkdir(const char *path) {
char ppath[FS_MAX_PATH];
char dname[64];
Expand Down
2 changes: 2 additions & 0 deletions src/kernel/file_systems/vfs/vfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,8 @@ int fs_open(const char *path, int flags);
int fs_close(int fd);
ssize_t fs_read(int fd, void *buf, size_t cnt);
ssize_t fs_write(int fd, const void *buf, size_t cnt);
off_t fs_lseek(int fd, off_t offset, int whence);

int fs_mkdir(const char *path);
int fs_unlink(const char *path);
int fs_listdir(const char *path, _emx_kdirent_t *buf, int max_entries);
Expand Down
81 changes: 41 additions & 40 deletions src/kernel/mem/mem.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#ifndef MEM_H
#define MEM_H

#include <types.h>
#include <limine/limine.h>
#include <types.h>

typedef struct limine_memmap_response limine_memmap_response_t;
typedef struct limine_hhdm_response limine_hhdm_response_t;
Expand All @@ -18,65 +18,66 @@ typedef struct limine_framebuffer limine_framebuffer_t;
#define GRAPHICS_SIZE 1024 * 1024 * 32

#define ULIME_START (GRAPHICS_START + GRAPHICS_SIZE)
#define ULIME_META_SIZE (1024 * 1024 * 2) //2mb
#define ULIME_META_SIZE (1024 * 1024 * 2) // 2mb

#define KLIME_SIZE_SLAB (1024 * 1024 * 8)
#define KLIME_SIZE_IO (1024 * 1024 * 4)
#define KLIME_SIZE_DMA (1024 * 1024 * 2)
#define KLIME_SIZE_NOTHEAP (PAGE_SIZE + PAGE_SIZE + KLIME_SIZE_SLAB + KLIME_SIZE_IO + KLIME_SIZE_DMA)
#define KLIME_SIZE_SLAB (1024 * 1024 * 8)
#define KLIME_SIZE_IO (1024 * 1024 * 4)
#define KLIME_SIZE_DMA (1024 * 1024 * 2)
#define KLIME_SIZE_NOTHEAP \
(PAGE_SIZE + PAGE_SIZE + KLIME_SIZE_SLAB + KLIME_SIZE_IO + KLIME_SIZE_DMA)
#define KLIME_SIZE_HEAP HEAP_SIZE - KLIME_SIZE_NOTHEAP

#define KLIME_OFFSET_SLAB_META PAGE_SIZE
#define KLIME_OFFSET_SLAB_DATA KLIME_OFFSET_SLAB_META + PAGE_SIZE
#define KLIME_OFFSET_IO KLIME_OFFSET_SLAB_DATA + KLIME_SIZE_SLAB
#define KLIME_OFFSET_DMA KLIME_OFFSET_IO + KLIME_SIZE_IO
#define KLIME_OFFSET_HEAP KLIME_OFFSET_DMA + KLIME_SIZE_DMA
#define KLIME_OFFSET_IO KLIME_OFFSET_SLAB_DATA + KLIME_SIZE_SLAB
#define KLIME_OFFSET_DMA KLIME_OFFSET_IO + KLIME_SIZE_IO
#define KLIME_OFFSET_HEAP KLIME_OFFSET_DMA + KLIME_SIZE_DMA

#define GLIME_SIZE_META (PAGE_SIZE * 256) //2mb
#define GLIME_SIZE_META (PAGE_SIZE * 256) // 2mb
#define GLIME_HEAP_SIZE (GRAPHICS_SIZE - GLIME_SIZE_META)

#define PAGE_SIZE 4096
#define FRAME_FREE 0x00 // Frame is available
#define FRAME_USED 0x01 // Frame is allocated
#define FRAME_KERNEL 0x02 // Frame contains kernel data/code
#define FRAME_USER 0x04 // Frame belongs to user process
#define FRAME_DMA 0x08 // Frame used for DMA operations
#define FRAME_SHARED 0x10 // Frame shared between processes
#define FRAME_COW 0x20 // Copy-on-write frame
#define FRAME_CACHE 0x40 // Frame used for disk cache
#define FRAME_GUARD 0x80 // Guard page (for stack overflow)
#define FRAME_FREE 0x00 // Frame is available
#define FRAME_USED 0x01 // Frame is allocated
#define FRAME_KERNEL 0x02 // Frame contains kernel data/code
#define FRAME_USER 0x04 // Frame belongs to user process
#define FRAME_DMA 0x08 // Frame used for DMA operations
#define FRAME_SHARED 0x10 // Frame shared between processes
#define FRAME_COW 0x20 // Copy-on-write frame
#define FRAME_CACHE 0x40 // Frame used for disk cache
#define FRAME_GUARD 0x80 // Guard page (for stack overflow)

typedef struct glime_request {
limine_framebuffer_response_t *fbr;
u64 virt;
u64 size;
limine_framebuffer_response_t *fbr;
u64 virt;
u64 size;
} glime_request_t;

typedef struct glime_response {
u64 *start_framebuffer;
u64 width;
u64 height;
u64 pitch;
u16 bpp;
u16 memory_model;
u8 red_mask_size;
u8 red_mask_shift;
u8 green_mask_size;
u8 green_mask_shift;
u8 blue_mask_size;
u8 blue_mask_shift;
u64 *start_framebuffer;
u64 width;
u64 height;
u64 pitch;
u16 bpp;
u16 memory_model;
u8 red_mask_size;
u8 red_mask_shift;
u8 green_mask_size;
u8 green_mask_shift;
u8 blue_mask_size;
u8 blue_mask_shift;
} glime_response_t;

typedef struct klime_request {
limine_hhdm_response_t *hpr;
u64 phys;
u64 virt;
u64 size;
limine_hhdm_response_t *hpr;
u64 phys;
u64 virt;
u64 size;
} klime_request_t;

typedef struct klime_response {
u64 *ptr;
u64 size;
u64 *ptr;
u64 size;
} klime_response_t;

#endif
Loading