X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fdrv%2Ffifo.c;h=cbbd1074a41109f41d98c9fd46ab296add31d892;hb=02cbaac1233be9c5228973a787431fa5e0aa178e;hp=83d11755166291d57c9137ec72cf13ef9ae3b8e7;hpb=6a945643557084578509e149c84cf5dde3c59c3c;p=tpg%2Facess2.git diff --git a/Kernel/drv/fifo.c b/Kernel/drv/fifo.c index 83d11755..cbbd1074 100644 --- a/Kernel/drv/fifo.c +++ b/Kernel/drv/fifo.c @@ -38,6 +38,7 @@ MODULE_DEFINE(0, 0x0032, FIFO, FIFO_Install, NULL, NULL); tDevFS_Driver gFIFO_DriverInfo = { NULL, "fifo", { + .Size = 1, .NumACLs = 1, .ACLs = &gVFS_ACL_EveryoneRW, .Flags = VFS_FFLAG_DIRECTORY, @@ -80,6 +81,7 @@ int FIFO_IOCtl(tVFS_Node *Node, int Id, void *Data) char *FIFO_ReadDir(tVFS_Node *Node, int Id) { tPipe *tmp = gFIFO_NamedPipes; + // Entry 0 is Anon Pipes if(Id == 0) return strdup("anon"); @@ -216,9 +218,12 @@ Uint64 FIFO_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer) while(remaining) { // Wait for buffer to fill - if(pipe->Flags & PF_BLOCKING) - while(pipe->ReadPos == pipe->WritePos) + if(pipe->Flags & PF_BLOCKING) { + while(pipe->ReadPos == pipe->WritePos) { Threads_Yield(); + //MAGIC_BREAK(); + } + } else if(pipe->ReadPos == pipe->WritePos) return 0; @@ -325,6 +330,7 @@ tPipe *FIFO_Int_NewPipe(int Size, char *Name) memset(ret, 0, allocsize); ret->Name = Name; + ret->Flags = PF_BLOCKING; // Allocate Buffer ret->BufSize = Size;