AcessNative - Updates for recent changes
authorJohn Hodge <[email protected]>
Wed, 3 Jul 2013 09:55:18 +0000 (17:55 +0800)
committerJohn Hodge <[email protected]>
Wed, 3 Jul 2013 09:55:18 +0000 (17:55 +0800)
AcessNative/acesskernel_src/Makefile
AcessNative/acesskernel_src/mouse.c
AcessNative/acesskernel_src/nativefs.c
AcessNative/acesskernel_src/vfs_handle.c
AcessNative/acesskernel_src/video.c
BuildAcessNative [new file with mode: 0755]

index 94bf4e6..19484d5 100644 (file)
@@ -12,6 +12,7 @@ ifeq ($(PLATFORM),)
 endif\r
 \r
 KERNEL_SRC = ../../KernelLand/Kernel/\r
+LDACESS_SRC = ../../Usermode/Libraries/ld-acess.so_src/\r
 \r
 KERNEL_OBJ := logging.o adt.o lib.o debug.o messages.o drvutil_disk.o drvutil_video.o\r
 #KERNEL_OBJ += libc.o\r
@@ -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\r
 KERNEL_OBJ += vfs/fs/root.o vfs/fs/devfs.o\r
 KERNEL_OBJ += drv/fifo.o drv/proc.o drv/dgram_pipe.o\r
-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\r
+KERNEL_OBJ += drv/vterm.o drv/vterm_font.o drv/vterm_output.o drv/vterm_input.o drv/vterm_termbuf.o\r
+KERNEL_OBJ += drv/vterm_vt100.o drv/vterm_2d.o\r
+KERNEL_OBJ += drv/pty.o\r
 \r
 N_OBJ := main.o\r
 \r
@@ -35,7 +38,7 @@ K_OBJ := $(addprefix $(KERNEL_SRC)obj-native-$(PLATFORM)/,$(KERNEL_OBJ))
 DEPFILES  = $(filter %.o,$(OBJ) $(N_OBJ) $(K_OBJ))\r
 DEPFILES := $(DEPFILES:%=%.dep)\r
 \r
-KCPPFLAGS = -I include/ -I $(KERNEL_SRC)include/\r
+KCPPFLAGS = -I include/ -I $(KERNEL_SRC)include/ -I$(LDACESS_SRC)include_exp/\r
 CFLAGS += -Wall -g -std=gnu99\r
 CPPFLAGS += $(shell sdl-config --cflags) -I /usr/include/\r
 LDFLAGS += $(shell sdl-config --libs) -g -Wl,--defsym,__buildnum=$(BUILD_NUM)\r
index 0ff9e8a..2f35c1d 100644 (file)
@@ -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;
index 65e874d..1a07627 100644 (file)
@@ -24,7 +24,7 @@
 // === STRUCTURES ===\r
 typedef struct\r
 {\r
-        int    InodeHandle;\r
+       void    *InodeHandle;\r
         int    bReadOnly;\r
 }      tNativeFS;\r
 \r
@@ -32,10 +32,10 @@ typedef struct
  int   NativeFS_Install(char **Arguments);\r
 tVFS_Node      *NativeFS_Mount(const char *Device, const char **Arguments);\r
 void   NativeFS_Unmount(tVFS_Node *Node);\r
-tVFS_Node      *NativeFS_FindDir(tVFS_Node *Node, const char *Name);\r
+tVFS_Node      *NativeFS_FindDir(tVFS_Node *Node, const char *Name, Uint Flags);\r
  int   NativeFS_ReadDir(tVFS_Node *Node, int Position, char Dest[FILENAME_MAX]);\r
-size_t NativeFS_Read(tVFS_Node *Node, _acess_off_t Offset, size_t Length, void *Buffer);\r
-size_t NativeFS_Write(tVFS_Node *Node, _acess_off_t Offset, size_t Length, const void *Buffer);\r
+size_t NativeFS_Read(tVFS_Node *Node, _acess_off_t Offset, size_t Length, void *Buffer, Uint Flags);\r
+size_t NativeFS_Write(tVFS_Node *Node, _acess_off_t Offset, size_t Length, const void *Buffer, Uint Flags);\r
 void   NativeFS_Close(tVFS_Node *Node);\r
 \r
 // === GLOBALS ===\r
@@ -77,7 +77,7 @@ tVFS_Node *NativeFS_Mount(const char *Device, const char **Arguments)
        // Check if directory exists\r
        // Parse flags from arguments\r
        info = malloc(sizeof(tNativeFS));\r
-       info->InodeHandle = Inode_GetHandle();\r
+       info->InodeHandle = Inode_GetHandle(NULL);\r
        info->bReadOnly = 0;\r
        // Create node\r
        ret = malloc(sizeof(tVFS_Node));\r
@@ -115,7 +115,7 @@ void NativeFS_Close(tVFS_Node *Node)
        }\r
 }\r
 \r
-tVFS_Node *NativeFS_FindDir(tVFS_Node *Node, const char *Name)\r
+tVFS_Node *NativeFS_FindDir(tVFS_Node *Node, const char *Name, Uint Flags)\r
 {\r
        char    *path;\r
        tNativeFS       *info = Node->ImplPtr;\r
@@ -204,7 +204,7 @@ int NativeFS_ReadDir(tVFS_Node *Node, int Position, char Dest[FILENAME_MAX])
        return 0;\r
 }\r
 \r
-size_t NativeFS_Read(tVFS_Node *Node, _acess_off_t Offset, size_t Length, void *Buffer)\r
+size_t NativeFS_Read(tVFS_Node *Node, _acess_off_t Offset, size_t Length, void *Buffer, Uint Flags)\r
 {\r
        ENTER("pNode XOffset xLength pBuffer", Node, Offset, Length, Buffer);\r
        if( fseek( (FILE *)(tVAddr)Node->Inode, Offset, SEEK_SET ) != 0 )\r
@@ -217,7 +217,7 @@ size_t NativeFS_Read(tVFS_Node *Node, _acess_off_t Offset, size_t Length, void *
        return ret;\r
 }\r
 \r
-size_t NativeFS_Write(tVFS_Node *Node, _acess_off_t Offset, size_t Length, const void *Buffer)\r
+size_t NativeFS_Write(tVFS_Node *Node, _acess_off_t Offset, size_t Length, const void *Buffer, Uint Flags)\r
 {\r
        FILE    *fp = (FILE *)(tVAddr)Node->Inode;\r
        ENTER("pNode XOffset xLength pBuffer", Node, Offset, Length, Buffer);\r
index 724e76f..1a5ebd5 100644 (file)
@@ -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;
index 3cce484..b1b65b0 100644 (file)
@@ -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 (executable)
index 0000000..38e04c7
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+make -C AcessNative/libacess-native.so_src/ && make -C AcessNative/acesskernel_src/ && ARCH=native make all-user
+

UCC git Repository :: git.ucc.asn.au