diff --git a/bin/muffin/main.cc b/bin/muffin/main.cc index 35d4cdd..4c96b36 100644 --- a/bin/muffin/main.cc +++ b/bin/muffin/main.cc @@ -59,6 +59,7 @@ //image->Load("/var/background/sphere800x600.bmp", *bgImage); +/* bgImage->ogCreate(800,600,OG_PIXFMT_24BPP); int fd = open("/var/background/ringed800_600.bmp", O_RDONLY); @@ -73,7 +74,9 @@ close(fd); } +*/ +image->Load("/var/background/ubix.bmp", *bgImage); //image->Load("/var/background/ringed800_600.bmp", *bgImage); //image->Load("/var/background/sphere800x600.bmp", *bgImage); window->ogCopy(*bgImage); diff --git a/lib/objgfx/objgfx40.so b/lib/objgfx/objgfx40.so index f037595..963e03b 100755 --- a/lib/objgfx/objgfx40.so +++ b/lib/objgfx/objgfx40.so Binary files differ diff --git a/lib/objgfx/ogImage.cpp b/lib/objgfx/ogImage.cpp index bbe432e..bbd49d6 100644 --- a/lib/objgfx/ogImage.cpp +++ b/lib/objgfx/ogImage.cpp @@ -459,7 +459,7 @@ break; } // if } // for iType - +std::cout << "bRead: " << bytesRead << std::endl; // Now seek backwards in the stream. input.seekg(-bytesRead, std::ios_base::cur); } @@ -492,6 +492,8 @@ ifstream stream(filename, ios_base::in | ios_base::binary); +std::cout << "Loaded" << std::endl; + if (stream) { success = Load(stream, surface); @@ -504,7 +506,9 @@ bool ogImage::Load(std::istream& stream, ogSurface& surface) { // First we need to find out what type of graphics file it is: +std::cout << "eIT" << std::endl; ogImageType imageType = ogImage::ImageType(stream); +std::cout << "rIT" << std::endl; if (imageType == NoImage) return false; diff --git a/lib/objgfx/vWindow.cpp b/lib/objgfx/vWindow.cpp index a99ee42..862f666 100644 --- a/lib/objgfx/vWindow.cpp +++ b/lib/objgfx/vWindow.cpp @@ -38,7 +38,6 @@ void vWindow::vSDECommand(uint32_t command) { uint32_t rwAddr = (uint32_t)realWindow; - printf("\nREAL WINDOW: 0x%X:0x%X:0x%X\n", &realWindow, realWindow, rwAddr); /* asm( diff --git a/sys/fs/vfs/file.c b/sys/fs/vfs/file.c index 655a0c9..8f5a424 100644 --- a/sys/fs/vfs/file.c +++ b/sys/fs/vfs/file.c @@ -114,9 +114,8 @@ return; } -//int sys_fseek(userFileDescriptor *userFd,long offset,int whence) { int sys_fseek( struct thread *td, struct sys_fseek_args *args ) { - kprintf("offset: 0x%X, whence: 0x%X", args->offset, args->whence); + kprintf("offset: %ld, whence: 0x%X", args->offset, args->whence); // TODO : coredump? if ( args->FILE == NULL ) { @@ -142,6 +141,7 @@ break; } + td->td_retval[0] = args->FILE->fd->offset & 0xFFFFFFFF; return (0); } @@ -159,22 +159,26 @@ kprintf("ERROR!"); } - kprintf("offset: 0x%X, whence: 0x%X", args->offset, args->whence); + kprintf("loffset(%i): %i:%i, whence: 0x%X", sizeof(off_t), args->offset >> 32, args->offset & 0xFFFFFF, args->whence); switch (args->whence) { - case 0: - fd->offset = args->offset + args->whence; - td->td_retval[0] = fd->offset; + case SEEK_SET: + fd->offset = args->offset; + td->td_retval[0] = fd->offset & 0xFFFFFFFF; + td->td_retval[1] = fd->offset >> 32; break; - case 1: + case SEEK_CUR: fd->offset += args->offset; - td->td_retval[0] = fd->offset; + td->td_retval[0] = fd->offset & 0xFFFFFFFF; + td->td_retval[1] = fd->offset >> 32; break; default: kprintf ("seek-whence: %i", args->whence); break; } + kprintf("loff: %ld", fd->offset); + return (error); } @@ -492,7 +496,7 @@ return (tmpFd); } else { - kprintf("Freeing"); + //kprintf("Freeing"); kfree( tmpFd->buffer ); kfree( tmpFd ); spinUnlock( &fdTable_lock ); @@ -529,7 +533,6 @@ systemVitals->openFiles--; spinUnlock( &fdTable_lock ); -kprintf("Fclose\n"); if ( tmpFd->buffer != NULL ) kfree( tmpFd->buffer ); kfree( tmpFd ); diff --git a/sys/fs/vfs/vfs.c b/sys/fs/vfs/vfs.c index 3a0cc92..63f5535 100644 --- a/sys/fs/vfs/vfs.c +++ b/sys/fs/vfs/vfs.c @@ -135,51 +135,3 @@ return(0x0); } - - - -int sys_openat(struct thread *td, struct sys_openat_args *args) { - int error = 0x0; - int index = 0x0; - struct file *nfp = 0x0; - - kprintf("openat"); - - error = falloc(td,&nfp,&index); - - if (error) - return(error); - - //strcpy(nfp->path, args->path); - - nfp->fd = fopen(args->path,"r"); - - if (nfp->fd == 0x0) { - td->td_retval[0] = -1; - } - else { - //td->o_files[index] = nfp; - td->td_retval[0] = index; - /* - for (index = 0; index < 256;index++) { - if (td->o_files[index] == 0x0) { - td->o_files[index] = nfp;//->fd; - td->td_retval[0] = index;//nfp->fd->ino;//MrOlsen 2018index; - break; - } - else { - td->td_retval[0] = -1;//nfp->fd->ino;//MrOlsen 2018index; - } - } - */ - } - - kprintf("path: %s:%i ", args->path, index); - - return (error); - } - - -/*** - END - ***/ diff --git a/sys/i386/i386_exec.c b/sys/i386/i386_exec.c index 9a8e786..733d2a2 100644 --- a/sys/i386/i386_exec.c +++ b/sys/i386/i386_exec.c @@ -524,8 +524,10 @@ fd = fopen(file, "r"); - if (fd == 0x0) + if (fd == 0x0) { + td->td_retval[0] = 2; return (-1); + } /* Test If Executable */ if (fd->perms == 0) { diff --git a/sys/include/sys/sysproto_posix.h b/sys/include/sys/sysproto_posix.h index 904c267..b4b530c 100644 --- a/sys/include/sys/sysproto_posix.h +++ b/sys/include/sys/sysproto_posix.h @@ -208,23 +208,18 @@ char FILE_l_[PADL_(userFileDescriptor *)]; userFileDescriptor *FILE; char FILE_r_[PADR_(userFileDescriptor *)]; - char offset_l_[PADL_(long)]; - long offset; - char offset_r_[PADR_(long)]; + char offset_l_[PADL_(off_t)]; + off_t offset; + char offset_r_[PADR_(off_t)]; char whence_l_[PADL_(int)]; int whence; char whence_r_[PADR_(int)]; }; + struct sys_lseek_args { - char fd_l_[PADL_(uint32_t)]; - uint32_t fd; - char fd_r_[PADR_(uint32_t)]; - char offset_l_[PADL_(long)]; - long offset; - char offset_r_[PADR_(long)]; - char whence_l_[PADL_(int)]; - int whence; - char whence_r_[PADR_(int)]; + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char offset_l_[PADL_(off_t)]; off_t offset; char offset_r_[PADR_(off_t)]; + char whence_l_[PADL_(int)]; int whence; char whence_r_[PADR_(int)]; }; struct sys_sysctl_args { diff --git a/sys/include/vfs/file.h b/sys/include/vfs/file.h index a4ae543..eee6c04 100644 --- a/sys/include/vfs/file.h +++ b/sys/include/vfs/file.h @@ -40,7 +40,9 @@ /* HACK */ int getchar(); -#define SEEK_SET 0x0 +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 #define VBLKSHIFT 12 #define VBLKSIZE (1 << VBLKSHIFT) @@ -64,7 +66,7 @@ uint32_t ino; uint16_t status; uint16_t mode; - uint32_t offset; + off_t offset; uint32_t size; uint16_t length; uint32_t start; diff --git a/sys/kernel/gen_calls.c b/sys/kernel/gen_calls.c index 4be212a..5a7fb22 100644 --- a/sys/kernel/gen_calls.c +++ b/sys/kernel/gen_calls.c @@ -43,7 +43,7 @@ /* Exit Syscall */ int sys_exit(struct thread *td, struct sys_exit_args *args) { - kprintf("exit(%i)", args->status); + //kprintf("exit(%i)", args->status); endTask(_current->id); return (0x0); } @@ -180,7 +180,6 @@ error = -1; } } - kprintf("w4: %i", td->td_retval[0]); return (error); } diff --git a/sys/kernel/syscall.c b/sys/kernel/syscall.c index 6a97508..12f83d4 100644 --- a/sys/kernel/syscall.c +++ b/sys/kernel/syscall.c @@ -82,11 +82,11 @@ return; } -kprintf("ERROR: 0x%X",error); +//kprintf("ERROR: 0x%X",error); switch (error) { case 0: frame->tf_eax = td->td_retval[0]; - // frame->tf_edx = td->td_retval[1]; + frame->tf_edx = td->td_retval[1]; frame->tf_eflags &= ~PSL_C; break; default: diff --git a/sys/kernel/vfs_calls.c b/sys/kernel/vfs_calls.c index c588451..a760099 100644 --- a/sys/kernel/vfs_calls.c +++ b/sys/kernel/vfs_calls.c @@ -45,6 +45,7 @@ return (error); kprintf("sO: 0x%X:%s", args->mode, args->path); + nfp->fd = fopen(args->path, "rb"); if (nfp->fd == 0x0) { @@ -54,12 +55,42 @@ error = -1; } else { - td->td_retval[0] = fd; //nfp->fd; //MrOlsen 2018index; + td->td_retval[0] = fd; } return (error); } +int sys_openat(struct thread *td, struct sys_openat_args *args) { + int error = 0x0; + int fd = 0x0; + struct file *nfp = 0x0; + + kprintf("openat"); + + error = falloc(td,&nfp,&fd); + + if (error) + return(error); + + kprintf("sOA: 0x%X:%s", args->mode, args->path); + + nfp->fd = fopen(args->path,"r"); + + if (nfp->fd == 0x0) { + fdestroy(td, nfp, fd); + + td->td_retval[0] = -1; + error = -1; + } + else { + td->td_retval[0] = fd; + } + + return (error); + } + + int sys_close(struct thread *td, struct sys_close_args *args) { struct file *fd = 0x0; getfd(td, &fd, args->fd); @@ -88,8 +119,6 @@ getfd(td, &fd, args->fd); - //kprintf("\nsys_read\n"); - if (args->fd > 3) { td->td_retval[0] = fread(args->buf, args->nbyte, 1, fd->fd); } @@ -125,8 +154,6 @@ bf[0] = '\n'; kprintf(bf); - //MROlsen 2018 kprintf("READ: %i", x); - td->td_retval[0] = x; } return (0); diff --git a/sys/sde/sde.cc b/sys/sde/sde.cc index ea025d8..1298a97 100644 --- a/sys/sde/sde.cc +++ b/sys/sde/sde.cc @@ -52,8 +52,6 @@ screen = (ogDisplay_UbixOS *) systemVitals->screen; - kprintf("\nCMD: %i:0x%X\n", args->cmd, args->ptr); - for (tmp = windows; tmp; tmp = tmp->next) { if (tmp->pid == (int) _current->id) break; @@ -65,18 +63,10 @@ } else if (tmp == 0x0 && args->cmd != registerWindow) { if (args->cmd == drawWindow) { - kprintf("oldBuf->ogAvail(): %i\n", oldBuf->ogAvail()); - kprintf("oldBuf->ogGetBPP(): %i\n", oldBuf->ogGetBPP()); screen->ogCopyBuf(screen->ogGetMaxX() - oldBuf->ogGetMaxX(), screen->ogGetMaxY() - oldBuf->ogGetMaxY(), *oldBuf, 0, 0, oldBuf->ogGetMaxX(), oldBuf->ogGetMaxY()); - kprintf("sX: %i, oX: %i, sY: %i, oY: %i", screen->ogGetMaxX(), oldBuf->ogGetMaxX(), screen->ogGetMaxY(), oldBuf->ogGetMaxY()); - kprintf("sID: 0x%X, oID: 0x%X", screen->ogGetPixFmtID(), oldBuf->ogGetPixFmtID()); -// oldBuf->ogLine(0, 0, oldBuf->ogGetMaxX(), oldBuf->ogGetMaxY(), 0xFFFFFFFF); -// kprintf("Did ogLine\n"); -// screen->ogCopyBuf(screen->ogGetMaxX() - oldBuf->ogGetMaxX(), screen->ogGetMaxY() - oldBuf->ogGetMaxY(), *oldBuf, 0, 0, oldBuf->ogGetMaxX(), oldBuf->ogGetMaxY()); -// kprintf("Did another copy buf\n"); } - kprintf("Invalid Window\n"); + //kprintf("Invalid Window\n"); td->td_retval[0] = -1; return(-1); }