Added VFS_IOCtl, Implemented input in vterm
authorJohn Hodge <[email protected]>
Tue, 22 Sep 2009 02:22:59 +0000 (10:22 +0800)
committerJohn Hodge <[email protected]>
Tue, 22 Sep 2009 02:22:59 +0000 (10:22 +0800)
Kernel/drv/vterm.c
Kernel/include/vfs_ext.h
Kernel/vfs/io.c

index f297b9f..05c3ab1 100644 (file)
@@ -5,6 +5,7 @@
 #include <fs_devfs.h>
 #include <modules.h>
 #include <tpl_drv_video.h>
+#include <tpl_drv_keyboard.h>
 
 // === CONSTANTS ===
 #define        NUM_VTS 4
@@ -176,6 +177,8 @@ void VT_InitInput()
 {
        giVT_InputDevHandle = VFS_Open(gsVT_InputDevice, VFS_OPENFLAG_READ);
        LOG("giVT_InputDevHandle = %x\n", giVT_InputDevHandle);
+       if(giVT_InputDevHandle == -1)   return ;
+       VFS_IOCtl(giVT_InputDevHandle, KB_IOCTL_SETCALLBACK, VT_KBCallBack);
 }
 
 /**
index 6390f84..53bcc05 100644 (file)
@@ -34,6 +34,8 @@ extern Uint64 VFS_Write(int FD, Uint64 Length, void *Buffer);
 extern Uint64  VFS_ReadAt(int FD, Uint64 Offset, Uint64 Length, void *Buffer);
 extern Uint64  VFS_WriteAt(int FD, Uint64 Offset, Uint64 Length, void *Buffer);
 
+extern int     VFS_IOCtl(int FD, int ID, void *Buffer);
+
 extern void    VFS_GetMemPath(void *Base, Uint Length, char *Dest);
 extern char    *VFS_GetTruePath(char *Path);
 
index 57d3f84..689121e 100644 (file)
@@ -166,3 +166,17 @@ int VFS_Seek(int FD, Sint64 Distance, int Whence)
        h->Position = Distance;
        return 0;
 }
+
+/**
+ * \fn int VFS_IOCtl(int FD, int ID, void *Buffer)
+ */
+int VFS_IOCtl(int FD, int ID, void *Buffer)
+{
+       tVFS_Handle     *h;
+       
+       h = VFS_GetHandle(FD);
+       if(!h)  return -1;
+
+       if(!h->Node->IOCtl)     return -1;
+       return h->Node->IOCtl(h->Node, ID, Buffer);
+}

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