diff --git a/libmaxsi/Makefile b/libmaxsi/Makefile index 8599ef59..60a9c4d6 100644 --- a/libmaxsi/Makefile +++ b/libmaxsi/Makefile @@ -155,14 +155,15 @@ setjmp.o \ setlocale.o \ settermmode.o \ signal.o \ +sleep.o \ sortix-sound.o \ stat.o \ stdio.o \ -thread.o \ time.o \ truncate.o \ umask.o \ unlink.o \ +usleep.o \ vscanf.o \ winsize.o \ write.o \ diff --git a/libmaxsi/include/libmaxsi/thread.h b/libmaxsi/sleep.cpp similarity index 61% rename from libmaxsi/include/libmaxsi/thread.h rename to libmaxsi/sleep.cpp index b71336cb..b357b606 100644 --- a/libmaxsi/include/libmaxsi/thread.h +++ b/libmaxsi/sleep.cpp @@ -1,6 +1,6 @@ -/****************************************************************************** +/******************************************************************************* - COPYRIGHT(C) JONAS 'SORTIE' TERMANSEN 2011. + Copyright(C) Jonas 'Sortie' Termansen 2011, 2012. This file is part of LibMaxsi. @@ -11,32 +11,24 @@ LibMaxsi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for - more details. + FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + details. You should have received a copy of the GNU Lesser General Public License along with LibMaxsi. If not, see . - thread.h - Exposes system calls for thread creation and management. + sleep.cpp + Blocks the current thread for for at least N seconds. -******************************************************************************/ +*******************************************************************************/ -#ifndef LIBMAXSI_THREAD_H -#define LIBMAXSI_THREAD_H +#include +#include -namespace Maxsi +DEFN_SYSCALL1_VOID(SysSleep, SYSCALL_SLEEP, long); + +extern "C" unsigned sleep(unsigned secs) { - namespace Thread - { - typedef void* (*Entry)(void*); - - size_t Create(Entry Start, const void* Parameter, size_t StackSize = SIZE_MAX); - void Exit(const void* Result); - void Sleep(long Seconds); - void USleep(long Microseconds); - } + SysSleep(secs); + return 0; } - -#endif - diff --git a/libmaxsi/thread.cpp b/libmaxsi/thread.cpp deleted file mode 100644 index 68e2c519..00000000 --- a/libmaxsi/thread.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/****************************************************************************** - - COPYRIGHT(C) JONAS 'SORTIE' TERMANSEN 2011. - - This file is part of LibMaxsi. - - LibMaxsi is free software: you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - LibMaxsi is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for - more details. - - You should have received a copy of the GNU Lesser General Public License - along with LibMaxsi. If not, see . - - thread.cpp - Exposes system calls for thread creation and management. - -******************************************************************************/ - -#include -#include -#include -#include - -#ifdef SORTIX_KERNEL -extern "C" void PanicF(const char* Format, ...); -#endif - -namespace Maxsi -{ - namespace Thread - { - typedef void (*SysEntry)(size_t, Entry, void*); - DEFN_SYSCALL4(size_t, SysCreate, 0, SysEntry, Entry, const void*, size_t); - DEFN_SYSCALL1_VOID(SysExit, SYSCALL_EXIT, const void*); - DEFN_SYSCALL1_VOID(SysSleep, SYSCALL_SLEEP, long); - DEFN_SYSCALL1_VOID(SysUSleep, SYSCALL_USLEEP, long); - - void Exit(const void* Result) - { - SysExit(Result); - } - - void ThreadStartup(size_t Id, Entry Start, void* Parameter) - { - Exit(Start(Parameter)); - } - - size_t Create(Entry Start, const void* Parameter, size_t StackSize) - { - return SysCreate(&ThreadStartup, Start, Parameter, StackSize); - } - - extern "C" unsigned sleep(unsigned Seconds) { SysSleep(Seconds); return 0; } - - // TODO: Thinking about it, there is no need for this to be a long. - // Sortix will never run for that long time, and shouldn't it be unsigned long? - void Sleep(long Seconds) - { - SysSleep(Seconds); - } - - extern "C" int usleep(useconds_t Microseconds) { SysUSleep(Microseconds); return 0; } - - void USleep(long Microseconds) - { - SysUSleep(Microseconds); - } - } -} - diff --git a/libmaxsi/usleep.cpp b/libmaxsi/usleep.cpp new file mode 100644 index 00000000..f7cfc4c8 --- /dev/null +++ b/libmaxsi/usleep.cpp @@ -0,0 +1,34 @@ +/******************************************************************************* + + Copyright(C) Jonas 'Sortie' Termansen 2011, 2012. + + This file is part of LibMaxsi. + + LibMaxsi is free software: you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + LibMaxsi is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General Public License + along with LibMaxsi. If not, see . + + usleep.cpp + Blocks the current thread for for at least N micro seconds. + +*******************************************************************************/ + +#include +#include + +DEFN_SYSCALL1_VOID(SysUSleep, SYSCALL_USLEEP, long); + +extern "C" int usleep(useconds_t usecs) +{ + SysUSleep(usecs); + return 0; +}