Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / dir / test / physio.c
CommitLineData
805e021f
CE
1/*
2 * Copyright 2000, International Business Machines Corporation and others.
3 * All Rights Reserved.
4 *
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
8 */
9
10/*
11 * File physio.cx
12 * NOTE This is NOT the standard physio.cx for venus or, yet alone, vice.
13 * It is a test one for use in src/dir.
14 *
15 */
16
17/* First we have the kernel hacks' include files. */
18#include <afsconfig.h>
19#include <afs/param.h>
20
21
22#include <sys/param.h>
23#ifdef AFS_VFSINCL_ENV
24#include <ufs/fsdir.h>
25#else /* AFS_VFSINCL_ENV */
26#include <sys/dir.h>
27#endif /* AFS_VFSINCL_ENV */
28#include <sys/user.h>
29#define VIRTUE 1
30#include <afs/remote.h>
31#undef VIRTUE
32#include <sys/file.h>
33#include <sys/stat.h>
34#include <errno.h>
35#include <itc.h>
36#include <stdio.h>
37#include <rx/xdr.h>
38
39/* Here are the include file(s) for the light-weight process facility. */
40#include "lwp.h"
41#include "lock.h"
42
43#define PAGESIZE 2048
44
45ReallyRead(fid, block, data)
46 long *fid; /* View the fid as longs. */
47 long block;
48 char *data;
49{ /* Do a real read. */
50 char fname[100];
51 int s, code;
52 sprintf(fname, "F%d", *fid);
53 s = open(fname, O_RDONLY, 0644);
54 if (s < 0)
55 Die("can't open cache file");
56 code = lseek(s, PAGESIZE * block, 0);
57 if (code < 0)
58 Die("r:lseek");
59 code = read(s, data, PAGESIZE);
60 if (code < 0) {
61 Die("read");
62 }
63 close(s);
64 return 0;
65}
66
67ReallyWrite(fid, block, data)
68 long *fid; /* View the fid as longs. */
69 long block;
70 char *data;
71{ /* Do a real write. */
72 char fname[100];
73 int s, code;
74 sprintf(fname, "F%d", *fid);
75 s = open(fname, O_RDWR | O_CREAT, 0644);
76 if (s < 0)
77 Die("can't find cache file");
78 code = lseek(s, PAGESIZE * block, 0);
79 if (code < 0)
80 Die("w:lseek");
81 code = write(s, data, PAGESIZE);
82 if (code < 0)
83 Die("write");
84 close(s);
85 return 0;
86}
87
88
89/* The following three routines provide the fid routines used by the buffer and directory packages. */
90
91int
92FidZap(afid)
93 long *afid;
94{ /* Zero out a file */
95 *afid = 0;
96}
97
98int
99FidZero(afid)
100 long *afid;
101{ /* Zero out a file */
102 *afid = 0;
103}
104
105int
106FidEq(afid, bfid)
107 long *afid, *bfid;
108{ /* Compare two fids for equality. */
109 if (*afid != *bfid)
110 return 0;
111 return 1;
112}
113
114int
115FidVolEq(afid, bfid)
116 long *afid, *bfid;
117{ /* Is fid in a particular volume */
118 return 1;
119}
120
121int
122FidCpy(dfid, sfid)
123 long *dfid, *sfid;
124{ /* Assign one fid to another. */
125 *dfid = *sfid;
126}
127
128Die(arg)
129 char *arg;
130{ /* Print an error message and then exit. */
131 int i, j;
132 printf("Fatal error: %s\n", arg);
133
134 i = 1;
135 j = 0;
136 i = i / j;
137
138 exit(1);
139}