From 132e159bfadf0f7669e80ef34ef660b99aa8b83c Mon Sep 17 00:00:00 2001 From: John Hodge Date: Wed, 3 Jul 2013 17:55:18 +0800 Subject: [PATCH] AcessNative - Updates for recent changes --- AcessNative/acesskernel_src/Makefile | 7 +++-- AcessNative/acesskernel_src/mouse.c | 8 +++--- AcessNative/acesskernel_src/nativefs.c | 16 ++++++------ AcessNative/acesskernel_src/vfs_handle.c | 33 ++++++++++++++++++++++++ AcessNative/acesskernel_src/video.c | 8 +++--- BuildAcessNative | 3 +++ 6 files changed, 57 insertions(+), 18 deletions(-) create mode 100755 BuildAcessNative diff --git a/AcessNative/acesskernel_src/Makefile b/AcessNative/acesskernel_src/Makefile index 94bf4e69..19484d5e 100644 --- a/AcessNative/acesskernel_src/Makefile +++ b/AcessNative/acesskernel_src/Makefile @@ -12,6 +12,7 @@ ifeq ($(PLATFORM),) endif KERNEL_SRC = ../../KernelLand/Kernel/ +LDACESS_SRC = ../../Usermode/Libraries/ld-acess.so_src/ KERNEL_OBJ := logging.o adt.o lib.o debug.o messages.o drvutil_disk.o drvutil_video.o #KERNEL_OBJ += libc.o @@ -19,7 +20,9 @@ KERNEL_OBJ += vfs/main.o vfs/open.o vfs/acls.o vfs/io.o vfs/dir.o KERNEL_OBJ += vfs/nodecache.o vfs/mount.o vfs/memfile.o vfs/select.o KERNEL_OBJ += vfs/fs/root.o vfs/fs/devfs.o KERNEL_OBJ += drv/fifo.o drv/proc.o drv/dgram_pipe.o -KERNEL_OBJ += drv/vterm.o drv/vterm_font.o drv/vterm_vt100.o drv/vterm_output.o drv/vterm_input.o drv/vterm_termbuf.o +KERNEL_OBJ += drv/vterm.o drv/vterm_font.o drv/vterm_output.o drv/vterm_input.o drv/vterm_termbuf.o +KERNEL_OBJ += drv/vterm_vt100.o drv/vterm_2d.o +KERNEL_OBJ += drv/pty.o N_OBJ := main.o @@ -35,7 +38,7 @@ K_OBJ := $(addprefix $(KERNEL_SRC)obj-native-$(PLATFORM)/,$(KERNEL_OBJ)) DEPFILES = $(filter %.o,$(OBJ) $(N_OBJ) $(K_OBJ)) DEPFILES := $(DEPFILES:%=%.dep) -KCPPFLAGS = -I include/ -I $(KERNEL_SRC)include/ +KCPPFLAGS = -I include/ -I $(KERNEL_SRC)include/ -I$(LDACESS_SRC)include_exp/ CFLAGS += -Wall -g -std=gnu99 CPPFLAGS += $(shell sdl-config --cflags) -I /usr/include/ LDFLAGS += $(shell sdl-config --libs) -g -Wl,--defsym,__buildnum=$(BUILD_NUM) diff --git a/AcessNative/acesskernel_src/mouse.c b/AcessNative/acesskernel_src/mouse.c index 0ff9e8a8..2f35c1d3 100644 --- a/AcessNative/acesskernel_src/mouse.c +++ b/AcessNative/acesskernel_src/mouse.c @@ -17,9 +17,9 @@ int Mouse_Cleanup(void); // - "User" side int Mouse_Root_ReadDir(tVFS_Node *Node, int Pos, char Dest[FILENAME_MAX]); -tVFS_Node *Mouse_Root_FindDir(tVFS_Node *Node, const char *Name); +tVFS_Node *Mouse_Root_FindDir(tVFS_Node *Node, const char *Name, Uint Flags); int Mouse_Dev_IOCtl(tVFS_Node *Node, int ID, void *Data); -size_t Mouse_Dev_Read(tVFS_Node *Node, off_t Offset, size_t Length, void *Data); +size_t Mouse_Dev_Read(tVFS_Node *Node, off_t Offset, size_t Length, void *Data, Uint Flags); // - Device Side void Mouse_HandleEvent(Uint32 ButtonState, int *AxisDeltas, int *AxisValues); @@ -75,7 +75,7 @@ int Mouse_Root_ReadDir(tVFS_Node *Node, int Pos, char Dest[FILENAME_MAX]) return 0; } -tVFS_Node *Mouse_Root_FindDir(tVFS_Node *Node, const char *Name) +tVFS_Node *Mouse_Root_FindDir(tVFS_Node *Node, const char *Name, Uint Flags) { if( strcmp(Name, "system") != 0 ) return NULL; return &gMouse_Pointer.Node; @@ -118,7 +118,7 @@ int Mouse_Dev_IOCtl(tVFS_Node *Node, int ID, void *Data) /** * \brief Read from a device */ -size_t Mouse_Dev_Read(tVFS_Node *Node, off_t Offset, size_t Length, void *Data) +size_t Mouse_Dev_Read(tVFS_Node *Node, off_t Offset, size_t Length, void *Data, Uint Flags) { tPointer *ptr = Node->ImplPtr; int n_buttons = ptr->FileHeader->NButtons; diff --git a/AcessNative/acesskernel_src/nativefs.c b/AcessNative/acesskernel_src/nativefs.c index 65e874d1..1a076274 100644 --- a/AcessNative/acesskernel_src/nativefs.c +++ b/AcessNative/acesskernel_src/nativefs.c @@ -24,7 +24,7 @@ // === STRUCTURES === typedef struct { - int InodeHandle; + void *InodeHandle; int bReadOnly; } tNativeFS; @@ -32,10 +32,10 @@ typedef struct int NativeFS_Install(char **Arguments); tVFS_Node *NativeFS_Mount(const char *Device, const char **Arguments); void NativeFS_Unmount(tVFS_Node *Node); -tVFS_Node *NativeFS_FindDir(tVFS_Node *Node, const char *Name); +tVFS_Node *NativeFS_FindDir(tVFS_Node *Node, const char *Name, Uint Flags); int NativeFS_ReadDir(tVFS_Node *Node, int Position, char Dest[FILENAME_MAX]); -size_t NativeFS_Read(tVFS_Node *Node, _acess_off_t Offset, size_t Length, void *Buffer); -size_t NativeFS_Write(tVFS_Node *Node, _acess_off_t Offset, size_t Length, const void *Buffer); +size_t NativeFS_Read(tVFS_Node *Node, _acess_off_t Offset, size_t Length, void *Buffer, Uint Flags); +size_t NativeFS_Write(tVFS_Node *Node, _acess_off_t Offset, size_t Length, const void *Buffer, Uint Flags); void NativeFS_Close(tVFS_Node *Node); // === GLOBALS === @@ -77,7 +77,7 @@ tVFS_Node *NativeFS_Mount(const char *Device, const char **Arguments) // Check if directory exists // Parse flags from arguments info = malloc(sizeof(tNativeFS)); - info->InodeHandle = Inode_GetHandle(); + info->InodeHandle = Inode_GetHandle(NULL); info->bReadOnly = 0; // Create node ret = malloc(sizeof(tVFS_Node)); @@ -115,7 +115,7 @@ void NativeFS_Close(tVFS_Node *Node) } } -tVFS_Node *NativeFS_FindDir(tVFS_Node *Node, const char *Name) +tVFS_Node *NativeFS_FindDir(tVFS_Node *Node, const char *Name, Uint Flags) { char *path; tNativeFS *info = Node->ImplPtr; @@ -204,7 +204,7 @@ int NativeFS_ReadDir(tVFS_Node *Node, int Position, char Dest[FILENAME_MAX]) return 0; } -size_t NativeFS_Read(tVFS_Node *Node, _acess_off_t Offset, size_t Length, void *Buffer) +size_t NativeFS_Read(tVFS_Node *Node, _acess_off_t Offset, size_t Length, void *Buffer, Uint Flags) { ENTER("pNode XOffset xLength pBuffer", Node, Offset, Length, Buffer); if( fseek( (FILE *)(tVAddr)Node->Inode, Offset, SEEK_SET ) != 0 ) @@ -217,7 +217,7 @@ size_t NativeFS_Read(tVFS_Node *Node, _acess_off_t Offset, size_t Length, void * return ret; } -size_t NativeFS_Write(tVFS_Node *Node, _acess_off_t Offset, size_t Length, const void *Buffer) +size_t NativeFS_Write(tVFS_Node *Node, _acess_off_t Offset, size_t Length, const void *Buffer, Uint Flags) { FILE *fp = (FILE *)(tVAddr)Node->Inode; ENTER("pNode XOffset xLength pBuffer", Node, Offset, Length, Buffer); diff --git a/AcessNative/acesskernel_src/vfs_handle.c b/AcessNative/acesskernel_src/vfs_handle.c index 724e76fc..1a5ebd52 100644 --- a/AcessNative/acesskernel_src/vfs_handle.c +++ b/AcessNative/acesskernel_src/vfs_handle.c @@ -173,6 +173,39 @@ tVFS_Handle *VFS_GetHandle(int FD) return h; } +int VFS_SetHandle(int FD, tVFS_Node *Node, int Mode) +{ + tVFS_Handle *h; + if(FD < 0) return -1; + + if( FD & VFS_KERNEL_FLAG ) { + FD &= (VFS_KERNEL_FLAG -1); + if( FD >= MAX_KERNEL_FILES ) return -1; + h = &gaKernelHandles[FD]; + } + else { + tUserHandles *ent; + int pid = Threads_GetPID(); + int maxhandles = *Threads_GetMaxFD(); + + ent = VFS_int_GetUserHandles(pid, 0); + if(!ent) { + Log_Error("VFS", "Client %i does not have a handle list (>)", pid); + return NULL; + } + + if(FD >= maxhandles) { + LOG("FD (%i) > Limit (%i), RETURN NULL", FD, maxhandles); + return NULL; + } + h = &ent->Handles[ FD ]; + } + h->Node = Node; + h->Mode = Mode; + return FD; +} + + int VFS_AllocHandle(int bIsUser, tVFS_Node *Node, int Mode) { int i; diff --git a/AcessNative/acesskernel_src/video.c b/AcessNative/acesskernel_src/video.c index 3cce4848..b1b65b01 100644 --- a/AcessNative/acesskernel_src/video.c +++ b/AcessNative/acesskernel_src/video.c @@ -14,8 +14,8 @@ // === PROTOTYPES === int Video_Install(char **Arguments); -size_t Video_Read(tVFS_Node *Node, Uint64 Offset, size_t Length, void *Buffer); -size_t Video_Write(tVFS_Node *Node, Uint64 Offset, size_t Length, const void *Buffer); +size_t Video_Read(tVFS_Node *Node, Uint64 Offset, size_t Length, void *Buffer, Uint Flags); +size_t Video_Write(tVFS_Node *Node, Uint64 Offset, size_t Length, const void *Buffer, Uint Flags); int Video_IOCtl(tVFS_Node *Node, int ID, void *Data); // --- 2D Acceleration Functions -- void Video_2D_Fill(void *Ent, Uint16 X, Uint16 Y, Uint16 W, Uint16 H, Uint32 Colour); @@ -55,7 +55,7 @@ int Video_Install(char **Arguments) /** * \brief Read from framebuffer (unimplemented) */ -size_t Video_Read(tVFS_Node *Node, Uint64 Offset, size_t Length, void *Buffer) +size_t Video_Read(tVFS_Node *Node, Uint64 Offset, size_t Length, void *Buffer, Uint Flags) { return 0; } @@ -63,7 +63,7 @@ size_t Video_Read(tVFS_Node *Node, Uint64 Offset, size_t Length, void *Buffer) /** * \brief Write to the framebuffer */ -size_t Video_Write(tVFS_Node *Node, Uint64 Offset, size_t Length, const void *Buffer) +size_t Video_Write(tVFS_Node *Node, Uint64 Offset, size_t Length, const void *Buffer, Uint Flags) { int i; ENTER("pNode XOffset XLength pBuffer", Node, Offset, Length, Buffer); diff --git a/BuildAcessNative b/BuildAcessNative new file mode 100755 index 00000000..38e04c77 --- /dev/null +++ b/BuildAcessNative @@ -0,0 +1,3 @@ +#!/bin/sh +make -C AcessNative/libacess-native.so_src/ && make -C AcessNative/acesskernel_src/ && ARCH=native make all-user + -- 2.20.1