From d8988870faea947ecaffbb4c50ee61ef8116eee5 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Wed, 20 Jun 2007 21:50:53 +0000 Subject: [PATCH] 2007-06-20 Patrick Mansfield * spu/jsre.h: Add new JSRE opcodes. * spu/dup2.c: New file to add dup2 support via assist call. * spu/fdatasync.c: New file to add fdatasync support via assist call. * spu/fsync.c: New file to add fsync support via assist call. * spu/lockf.c: New file to add lockf support via assist call. * spu/sync.c: New file to add sync support via assist call. * spu/truncate.c: New file to add truncate support via assist call. * spu/Makefile.in: Add new files. --- libgloss/ChangeLog | 11 ++++++++ libgloss/spu/Makefile.in | 13 +++++----- libgloss/spu/dup2.c | 53 +++++++++++++++++++++++++++++++++++++ libgloss/spu/fdatasync.c | 41 +++++++++++++++++++++++++++++ libgloss/spu/fsync.c | 41 +++++++++++++++++++++++++++++ libgloss/spu/jsre.h | 6 +++++ libgloss/spu/lockf.c | 56 ++++++++++++++++++++++++++++++++++++++++ libgloss/spu/sync.c | 43 ++++++++++++++++++++++++++++++ libgloss/spu/truncate.c | 53 +++++++++++++++++++++++++++++++++++++ 9 files changed, 311 insertions(+), 6 deletions(-) create mode 100644 libgloss/spu/dup2.c create mode 100644 libgloss/spu/fdatasync.c create mode 100644 libgloss/spu/fsync.c create mode 100644 libgloss/spu/lockf.c create mode 100644 libgloss/spu/sync.c create mode 100644 libgloss/spu/truncate.c diff --git a/libgloss/ChangeLog b/libgloss/ChangeLog index 82b6d3651..c2555e3e9 100644 --- a/libgloss/ChangeLog +++ b/libgloss/ChangeLog @@ -1,3 +1,14 @@ +2007-06-20 Patrick Mansfield + + * spu/jsre.h: Add new JSRE opcodes. + * spu/dup2.c: New file to add dup2 support via assist call. + * spu/fdatasync.c: New file to add fdatasync support via assist call. + * spu/fsync.c: New file to add fsync support via assist call. + * spu/lockf.c: New file to add lockf support via assist call. + * spu/sync.c: New file to add sync support via assist call. + * spu/truncate.c: New file to add truncate support via assist call. + * spu/Makefile.in: Add new files. + 2007-06-20 Patrick Mansfield * spu/jsre.h: JSRE_LINK, JSRE_SYMLINK and JSRE_READLINK. diff --git a/libgloss/spu/Makefile.in b/libgloss/spu/Makefile.in index c71db76dd..3c4e60265 100644 --- a/libgloss/spu/Makefile.in +++ b/libgloss/spu/Makefile.in @@ -55,12 +55,13 @@ OBJCOPY = `t='$(program_transform_name)'; echo objcopy | sed -e $$t` # object files needed OBJS = \ - access.o chdir.o chmod.o chown.o close.o conv_stat.o dup.o exit.o \ - fchdir.o fchmod.o fchown.o fstat.o ftruncate.o getcwd.o \ - getpagesize.o getpid.o gettimeofday.o isatty.o kill.o lchown.o \ - link.o lseek.o lstat.o mkdir.o mknod.o nanosleep.o open.o read.o \ - readlink.o rmdir.o sbrk.o stat.o symlink.o syscalls.o unlink.o \ - write.o + access.o chdir.o chmod.o chown.o close.o conv_stat.o dup.o \ + dup2.o exit.o fchdir.o fchmod.o fchown.o fdatasync.o fstat.o \ + fsync.o ftruncate.o getcwd.o getpagesize.o getpid.o \ + gettimeofday.o isatty.o kill.o lchown.o link.o lockf.o lseek.o \ + lstat.o mkdir.o mknod.o nanosleep.o open.o read.o readlink.o \ + rmdir.o sbrk.o stat.o symlink.o sync.o syscalls.o truncate.o \ + unlink.o write.o # Object files specific to particular targets. EVALOBJS = ${OBJS} diff --git a/libgloss/spu/dup2.c b/libgloss/spu/dup2.c new file mode 100644 index 000000000..3ae2855b8 --- /dev/null +++ b/libgloss/spu/dup2.c @@ -0,0 +1,53 @@ +/* + Copyright 2007 + International Business Machines Corporation, + Sony Computer Entertainment, Incorporated, + Toshiba Corporation, + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the names of the copyright holders nor the names of their + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "jsre.h" + +typedef struct +{ + unsigned int oldfd; + unsigned int pad0[3]; + unsigned int newfd; + unsigned int pad1[3]; +} syscall_dup2_t; + +int +dup2 (int oldfd, int newfd) +{ + syscall_dup2_t sys; + + sys.oldfd = (unsigned int) oldfd; + sys.newfd = (unsigned int) newfd; + return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_DUP2, &sys); +} diff --git a/libgloss/spu/fdatasync.c b/libgloss/spu/fdatasync.c new file mode 100644 index 000000000..6c06e3f3a --- /dev/null +++ b/libgloss/spu/fdatasync.c @@ -0,0 +1,41 @@ +/* + Copyright 2007 + International Business Machines Corporation, + Sony Computer Entertainment, Incorporated, + Toshiba Corporation, + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the names of the copyright holders nor the names of their + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "jsre.h" + +int +fdatasync (int fd) +{ + return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_FDATASYNC, &fd); +} diff --git a/libgloss/spu/fsync.c b/libgloss/spu/fsync.c new file mode 100644 index 000000000..775665966 --- /dev/null +++ b/libgloss/spu/fsync.c @@ -0,0 +1,41 @@ +/* + Copyright 2007 + International Business Machines Corporation, + Sony Computer Entertainment, Incorporated, + Toshiba Corporation, + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the names of the copyright holders nor the names of their + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "jsre.h" + +int +fsync (int fd) +{ + return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_FSYNC, &fd); +} diff --git a/libgloss/spu/jsre.h b/libgloss/spu/jsre.h index a6f5c8ed1..f0a750814 100644 --- a/libgloss/spu/jsre.h +++ b/libgloss/spu/jsre.h @@ -70,6 +70,12 @@ Author: Andreas Neukoetter (ti95neuk@de.ibm.com) #define JSRE_LINK 44 #define JSRE_SYMLINK 45 #define JSRE_READLINK 46 +#define JSRE_SYNC 47 +#define JSRE_FSYNC 48 +#define JSRE_FDATASYNC 49 +#define JSRE_DUP2 50 +#define JSRE_LOCKF 51 +#define JSRE_TRUNCATE 52 struct jsre_stat { unsigned int dev; diff --git a/libgloss/spu/lockf.c b/libgloss/spu/lockf.c new file mode 100644 index 000000000..3d2d7dc81 --- /dev/null +++ b/libgloss/spu/lockf.c @@ -0,0 +1,56 @@ +/* + Copyright 2007 + International Business Machines Corporation, + Sony Computer Entertainment, Incorporated, + Toshiba Corporation, + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the names of the copyright holders nor the names of their + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "jsre.h" + +typedef struct +{ + unsigned int fd; + unsigned int pad0[3]; + unsigned int cmd; + unsigned int pad1[3]; + unsigned int len; + unsigned int pad2[3]; +} syscall_lockf_t; + +int +lockf (int fd, int cmd, off_t len) +{ + syscall_lockf_t sys; + + sys.fd = (unsigned int) fd; + sys.cmd = (unsigned int) cmd; + sys.len = (unsigned int) len; + return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_LOCKF, &sys); +} diff --git a/libgloss/spu/sync.c b/libgloss/spu/sync.c new file mode 100644 index 000000000..6b74f8e77 --- /dev/null +++ b/libgloss/spu/sync.c @@ -0,0 +1,43 @@ +/* + Copyright 2007 + International Business Machines Corporation, + Sony Computer Entertainment, Incorporated, + Toshiba Corporation, + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the names of the copyright holders nor the names of their + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "jsre.h" + +void +sync (void) +{ + int sys; + + __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_SYNC, &sys); +} diff --git a/libgloss/spu/truncate.c b/libgloss/spu/truncate.c new file mode 100644 index 000000000..2f81baae9 --- /dev/null +++ b/libgloss/spu/truncate.c @@ -0,0 +1,53 @@ +/* + Copyright 2007 + International Business Machines Corporation, + Sony Computer Entertainment, Incorporated, + Toshiba Corporation, + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the names of the copyright holders nor the names of their + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "jsre.h" + +typedef struct +{ + unsigned int path; + unsigned int pad0[3]; + unsigned int length; + unsigned int pad1[3]; +} syscall_truncate_t; + +int +truncate (const char *path, off_t length) +{ + syscall_truncate_t sys; + + sys.path = (unsigned int) path; + sys.length = (unsigned int) length; + return __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_TRUNCATE, &sys); +}