PERFORCE change 54901 for review
Juli Mallett
jmallett at FreeBSD.org
Mon Jun 14 04:53:02 GMT 2004
http://perforce.freebsd.org/chv.cgi?CH=54901
Change 54901 by jmallett at jmallett_oingo on 2004/06/14 04:52:32
Open, Close, Seek. Fix return type botch for errors from Read/Write.
Affected files ...
.. //depot/projects/mips/sys/dev/arcs/arcs.c#4 edit
.. //depot/projects/mips/sys/dev/arcs/arcs.h#3 edit
Differences ...
==== //depot/projects/mips/sys/dev/arcs/arcs.c#4 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $P4: //depot/projects/mips/sys/dev/arcs/arcs.c#3 $
+ * $P4: //depot/projects/mips/sys/dev/arcs/arcs.c#4 $
*/
#include <sys/param.h>
@@ -51,9 +51,12 @@
#define ARCS_FV_EnterInteractiveMode_Offset (7 * sizeof (ARCS_Pointer_t))
#define ARCS_FV_GetChild_Offset (10 * sizeof (ARCS_Pointer_t))
#define ARCS_FV_GetMemoryDescriptor_Offset (18 * sizeof (ARCS_Pointer_t))
+#define ARCS_FV_Open_Offset (23 * sizeof (ARCS_Pointer_t))
+#define ARCS_FV_Close_Offset (24 * sizeof (ARCS_Pointer_t))
#define ARCS_FV_Read_Offset (25 * sizeof (ARCS_Pointer_t))
#define ARCS_FV_GetReadStatus_Offset (26 * sizeof (ARCS_Pointer_t))
#define ARCS_FV_Write_Offset (27 * sizeof (ARCS_Pointer_t))
+#define ARCS_FV_Seek_Offset (28 * sizeof (ARCS_Pointer_t))
#define ARCS_FV_GetEnvironmentVariable_Offset (30 * sizeof (ARCS_Pointer_t))
int
@@ -135,10 +138,46 @@
return (value);
}
+int
+ARCS_Open(const char *name, int mode, int *fdp)
+{
+ uint32_t (*Open)(ARCS_Pointer_t, uint32_t, ARCS_Pointer_t);
+ int error;
+ uint32_t errord;
+ ARCS_Pointer_t named;
+ uint32_t moded;
+ uint32_t fdd;
+ ARCS_Pointer_t fdpd;
+
+ Open = (uint32_t (*)(ARCS_Pointer_t, uint32_t, ARCS_Pointer_t))(intptr_t)*(ARCS_Pointer_t *)&ARCS_FV[ARCS_FV_Open_Offset];
+ named = (ARCS_Pointer_t)(intptr_t)name;
+ moded = (uint32_t)mode;
+ fdpd = (ARCS_Pointer_t)(intptr_t)&fdd;
+ errord = (*Open)(named, moded, fdpd);
+ error = (int)errord;
+ *fdp = (int)fdd;
+ return (error);
+}
+
+int
+ARCS_Close(int fd)
+{
+ uint32_t (*Close)(uint32_t);
+ int error;
+ uint32_t errord;
+ uint32_t fdd;
+
+ Close = (uint32_t (*)(uint32_t))(intptr_t)*(ARCS_Pointer_t *)&ARCS_FV[ARCS_FV_Close_Offset];
+ fdd = (uint32_t)fd;
+ errord = (*Close)(fdd);
+ error = (int)errord;
+ return (error);
+}
+
size_t
ARCS_Read(int fd, char *buf, size_t buflen)
{
- ARCS_Pointer_t (*Read)(uint32_t, ARCS_Pointer_t, uint32_t, ARCS_Pointer_t);
+ uint32_t (*Read)(uint32_t, ARCS_Pointer_t, uint32_t, ARCS_Pointer_t);
size_t len;
uint32_t fdd;
ARCS_Pointer_t bufd;
@@ -146,7 +185,7 @@
uint32_t lend;
ARCS_Pointer_t lenpd;
- Read = (ARCS_Pointer_t (*)(uint32_t, ARCS_Pointer_t, uint32_t, ARCS_Pointer_t))(intptr_t)*(ARCS_Pointer_t *)&ARCS_FV[ARCS_FV_Read_Offset];
+ Read = (uint32_t (*)(uint32_t, ARCS_Pointer_t, uint32_t, ARCS_Pointer_t))(intptr_t)*(ARCS_Pointer_t *)&ARCS_FV[ARCS_FV_Read_Offset];
fdd = (uint32_t)fd;
bufd = (ARCS_Pointer_t)(intptr_t)buf;
buflend = (uint32_t)buflen;
@@ -174,7 +213,7 @@
size_t
ARCS_Write(int fd, const char *buf, size_t buflen)
{
- ARCS_Pointer_t (*Write)(uint32_t, ARCS_Pointer_t, uint32_t, ARCS_Pointer_t);
+ uint32_t (*Write)(uint32_t, ARCS_Pointer_t, uint32_t, ARCS_Pointer_t);
size_t len;
uint32_t fdd;
ARCS_Pointer_t bufd;
@@ -182,7 +221,7 @@
uint32_t lend;
ARCS_Pointer_t lenpd;
- Write = (ARCS_Pointer_t (*)(uint32_t, ARCS_Pointer_t, uint32_t, ARCS_Pointer_t))(intptr_t)*(ARCS_Pointer_t *)&ARCS_FV[ARCS_FV_Write_Offset];
+ Write = (uint32_t (*)(uint32_t, ARCS_Pointer_t, uint32_t, ARCS_Pointer_t))(intptr_t)*(ARCS_Pointer_t *)&ARCS_FV[ARCS_FV_Write_Offset];
fdd = (uint32_t)fd;
bufd = (ARCS_Pointer_t)(intptr_t)buf;
buflend = (uint32_t)buflen;
@@ -192,6 +231,28 @@
return (len);
}
+int
+ARCS_Seek(int fd, off_t *offp, int whence)
+{
+ uint32_t (*Seek)(uint32_t, ARCS_Pointer_t, uint32_t);
+ int error;
+ uint32_t errord;
+ uint32_t fdd;
+ uint64_t offd;
+ ARCS_Pointer_t offpd;
+ uint32_t whenced;
+
+ Seek = (uint32_t (*)(uint32_t, ARCS_Pointer_t, uint32_t))(intptr_t)*(ARCS_Pointer_t *)&ARCS_FV[ARCS_FV_Seek_Offset];
+ fdd = (uint32_t)fd;
+ offd = (uint64_t)*offp;
+ offpd = (ARCS_Pointer_t)(intptr_t)&offd;
+ whenced = (uint32_t)whence;
+ errord = (*Seek)(fdd, offpd, whenced);
+ error = (int)errord;
+ *offp = offd;
+ return (error);
+}
+
struct ARCS_Component *
ARCS_GetChild(const struct ARCS_Component *component)
{
==== //depot/projects/mips/sys/dev/arcs/arcs.h#3 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $P4: //depot/projects/mips/sys/dev/arcs/arcs.h#2 $
+ * $P4: //depot/projects/mips/sys/dev/arcs/arcs.h#3 $
*/
#ifndef _DEV_ARCS_ARCS_H_
@@ -34,6 +34,8 @@
#if defined (IP22)
typedef int32_t ARCS_Pointer_t;
+#elif defined (IP30)
+typedef int64_t ARCS_Pointer_t;
#endif
#else
#error "ARCS not supported."
@@ -107,9 +109,12 @@
void ARCS_Reboot(void);
const char *ARCS_GetEnvironmentVariable(const char *);
struct ARCS_Mem *ARCS_GetMemoryDescriptor(const struct ARCS_Mem *);
+int ARCS_Open(const char *, int, int *);
+int ARCS_Close(int);
size_t ARCS_Read(int, char *, size_t);
int ARCS_GetReadStatus(int);
size_t ARCS_Write(int, const char *, size_t);
+int ARCS_Seek(int, off_t *, int);
struct ARCS_Component *ARCS_GetChild(const struct ARCS_Component *);
#endif /* _DEV_ARCS_ARCS_H_ */
More information about the p4-projects
mailing list