From 72a14088c27bf0059e99366b5264b93cf37df364 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Wed, 20 Jun 2007 21:41:33 +0000 Subject: [PATCH] 2007-06-20 Patrick Mansfield * spu/jsre.h: Add JSRE_LSTAT. * spu/lstat.c: New file add lstat support via an assist call. * spu/conv_stat.c: New file, add common stat conversion code. * spu/fstat.c: Use __conv_stat. * spu/stat.c: Use __conv_stat. * spu/Makefile.in: Add conv_stat.o and lstat.o. --- libgloss/ChangeLog | 9 +++++++ libgloss/spu/Makefile.in | 10 +++---- libgloss/spu/conv_stat.c | 57 +++++++++++++++++++++++++++++++++++++++ libgloss/spu/fstat.c | 18 ++----------- libgloss/spu/jsre.h | 10 ++++--- libgloss/spu/lstat.c | 58 ++++++++++++++++++++++++++++++++++++++++ libgloss/spu/stat.c | 18 ++----------- 7 files changed, 140 insertions(+), 40 deletions(-) create mode 100644 libgloss/spu/conv_stat.c create mode 100644 libgloss/spu/lstat.c diff --git a/libgloss/ChangeLog b/libgloss/ChangeLog index 450f0d933..ad2e062b4 100644 --- a/libgloss/ChangeLog +++ b/libgloss/ChangeLog @@ -1,3 +1,12 @@ +2007-06-20 Patrick Mansfield + + * spu/jsre.h: Add JSRE_LSTAT. + * spu/lstat.c: New file add lstat support via an assist call. + * spu/conv_stat.c: New file, add common stat conversion code. + * spu/fstat.c: Use __conv_stat. + * spu/stat.c: Use __conv_stat. + * spu/Makefile.in: Add conv_stat.o and lstat.o. + 2007-06-20 Patrick Mansfield * spu/jsre.h: Add JSRE_GETCWD. diff --git a/libgloss/spu/Makefile.in b/libgloss/spu/Makefile.in index 3da5a2383..5ec6b31f0 100644 --- a/libgloss/spu/Makefile.in +++ b/libgloss/spu/Makefile.in @@ -55,11 +55,11 @@ OBJCOPY = `t='$(program_transform_name)'; echo objcopy | sed -e $$t` # object files needed OBJS = \ - access.o chdir.o chmod.o chown.o close.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 lseek.o mkdir.o \ - mknod.o nanosleep.o open.o read.o rmdir.o sbrk.o stat.o syscalls.o \ - unlink.o write.o + 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 \ + lseek.o lstat.o mkdir.o mknod.o nanosleep.o open.o read.o rmdir.o \ + sbrk.o stat.o syscalls.o unlink.o write.o # Object files specific to particular targets. EVALOBJS = ${OBJS} diff --git a/libgloss/spu/conv_stat.c b/libgloss/spu/conv_stat.c new file mode 100644 index 000000000..6b51058fb --- /dev/null +++ b/libgloss/spu/conv_stat.c @@ -0,0 +1,57 @@ +/* + 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" + +/* + * Convert the jsre stat structure to the newlib stat. + */ + +void +__conv_stat (struct stat *stat, struct jsre_stat *jstat) +{ + stat->st_dev = jstat->dev; + stat->st_ino = jstat->ino; + stat->st_mode = jstat->mode; + stat->st_nlink = jstat->nlink; + stat->st_uid = jstat->uid; + stat->st_gid = jstat->gid; + stat->st_rdev = jstat->rdev; + stat->st_size = jstat->size; + stat->st_blksize = jstat->blksize; + stat->st_blocks = jstat->blocks; + stat->st_atime = jstat->atime; + stat->st_mtime = jstat->mtime; + stat->st_ctime = jstat->ctime; +} diff --git a/libgloss/spu/fstat.c b/libgloss/spu/fstat.c index 45abeeb02..cb983d958 100644 --- a/libgloss/spu/fstat.c +++ b/libgloss/spu/fstat.c @@ -45,26 +45,12 @@ int fstat (int file, struct stat *pstat) { syscall_fstat_t sys; - jsre_stat_t pjstat; + struct jsre_stat pjstat; int ret; sys.file = file; sys.ptr = ( unsigned int )&pjstat; ret = __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_FSTAT, &sys); - - pstat->st_dev = pjstat.dev; - pstat->st_ino = pjstat.ino; - pstat->st_mode = pjstat.mode; - pstat->st_nlink = pjstat.nlink; - pstat->st_uid = pjstat.uid; - pstat->st_gid = pjstat.gid; - pstat->st_rdev = pjstat.rdev; - pstat->st_size = pjstat.size; - pstat->st_blksize = pjstat.blksize; - pstat->st_blocks = pjstat.blocks; - pstat->st_atime = pjstat.atime; - pstat->st_mtime = pjstat.mtime; - pstat->st_ctime = pjstat.ctime; - + __conv_stat (pstat, &pjstat); return ret; } diff --git a/libgloss/spu/jsre.h b/libgloss/spu/jsre.h index 143289e81..33a2af739 100644 --- a/libgloss/spu/jsre.h +++ b/libgloss/spu/jsre.h @@ -32,6 +32,9 @@ Author: Andreas Neukoetter (ti95neuk@de.ibm.com) /* this file provides the mappings for the JSRE defined interface for PE assisted libary calls */ +#include +#include + #ifndef __JSRE_H #define __JSRE_H @@ -42,6 +45,7 @@ Author: Andreas Neukoetter (ti95neuk@de.ibm.com) #define JSRE_GETPAGESIZE 6 #define JSRE_GETTIMEOFDAY 7 #define JSRE_LSEEK 9 +#define JSRE_LSTAT 10 #define JSRE_OPEN 15 #define JSRE_READ 16 #define JSRE_STAT 23 @@ -64,7 +68,7 @@ Author: Andreas Neukoetter (ti95neuk@de.ibm.com) #define JSRE_LCHOWN 42 #define JSRE_GETCWD 43 -typedef struct { +struct jsre_stat { unsigned int dev; unsigned int ino; unsigned int mode; @@ -78,8 +82,8 @@ typedef struct { unsigned int atime; unsigned int mtime; unsigned int ctime; -} jsre_stat_t; +}; -#include +void __conv_stat (struct stat *stat, struct jsre_stat *jstat); #endif diff --git a/libgloss/spu/lstat.c b/libgloss/spu/lstat.c new file mode 100644 index 000000000..3a1189ec8 --- /dev/null +++ b/libgloss/spu/lstat.c @@ -0,0 +1,58 @@ +/* + 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 +#include "jsre.h" + +typedef struct +{ + unsigned int pathname; + unsigned int pad0[3]; + unsigned int ptr; + unsigned int pad1[3]; +} syscall_stat_t; + +int +lstat (const char *pathname, struct stat *pstat) +{ + syscall_stat_t sys; + struct jsre_stat pjstat; + int ret; + + sys.pathname = (unsigned int)pathname; + sys.ptr = ( unsigned int )&pjstat; + ret = __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_LSTAT, &sys); + __conv_stat (pstat, &pjstat); + return ret; +} diff --git a/libgloss/spu/stat.c b/libgloss/spu/stat.c index 5f64c42f5..79be7dc67 100644 --- a/libgloss/spu/stat.c +++ b/libgloss/spu/stat.c @@ -46,26 +46,12 @@ int stat (const char *pathname, struct stat *pstat) { syscall_stat_t sys; - jsre_stat_t pjstat; + struct jsre_stat pjstat; int ret; sys.pathname = (unsigned int)pathname; sys.ptr = ( unsigned int )&pjstat; ret = __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_STAT, &sys); - - pstat->st_dev = pjstat.dev; - pstat->st_ino = pjstat.ino; - pstat->st_mode = pjstat.mode; - pstat->st_nlink = pjstat.nlink; - pstat->st_uid = pjstat.uid; - pstat->st_gid = pjstat.gid; - pstat->st_rdev = pjstat.rdev; - pstat->st_size = pjstat.size; - pstat->st_blksize = pjstat.blksize; - pstat->st_blocks = pjstat.blocks; - pstat->st_atime = pjstat.atime; - pstat->st_mtime = pjstat.mtime; - pstat->st_ctime = pjstat.ctime; - + __conv_stat (pstat, &pjstat); return ret; }