xfs: force file creation to the data device for certain layout tests
[xfstests-dev.git] / lib / datapid.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2000 Silicon Graphics, Inc.
4  * All Rights Reserved.
5  */
6 /************
7
8 64 bits in a Cray word
9
10                                 12345678901234567890123456789012
11 1234567890123456789012345678901234567890123456789012345678901234
12 ________________________________________________________________
13 <    pid       >< word-offset in file (same #) ><    pid       >
14
15 1234567890123456789012345678901234567890123456789012345678901234
16 ________________________________________________________________
17 <    pid       >< offset in file of this word  ><    pid       >
18
19
20 8 bits to a bytes == character
21  NBPW            8 
22 ************/
23
24 #include <stdio.h>
25 #include <sys/param.h>
26 #ifdef UNIT_TEST
27 #include <unistd.h>
28 #include <stdlib.h>
29 #endif
30
31 static char Errmsg[80];
32
33 #define LOWER16BITS(X)  (X & 0177777)
34 #define LOWER32BITS(X)  (X & 0xffffffff)
35
36 /***
37 #define HIGHBITS(WRD, bits) ( (-1 << (64-bits)) & WRD)
38 #define LOWBITS(WRD, bits) ( (-1 >> (64-bits)) & WRD)
39 ****/
40
41 #define NBPBYTE         8               /* number bits per byte */
42
43 #ifndef DEBUG
44 #define DEBUG   0
45 #endif
46
47 /***********************************************************************
48  *
49  * 
50  * 1   2   3   4   5   6   7   8   9   10  11  12  13  14  14  15       bytes
51  * 1234567890123456789012345678901234567890123456789012345678901234     bits
52  * ________________________________________________________________     1 word
53  * <    pid       >< offset in file of this word  ><    pid       >
54  * 
55  * the words are put together where offset zero is the start.
56  * thus, offset 16 is the start of  the second full word
57  * Thus, offset 8 is in middle of word 1
58  ***********************************************************************/
59 int
60 datapidgen(pid, buffer, bsize, offset)
61 int pid;
62 char *buffer;
63 int bsize;
64 int offset;
65 {
66         return -1;      /* not support on non-64 bits word machines  */
67
68
69
70
71 /***********************************************************************
72  *
73  *
74  ***********************************************************************/
75 int
76 datapidchk(pid, buffer, bsize, offset, errmsg)
77 int pid;
78 char *buffer;
79 int bsize;
80 int offset;
81 char **errmsg;
82 {
83     if ( errmsg != NULL ) {
84         *errmsg = Errmsg;
85     }
86     sprintf(Errmsg, "Not supported on this OS.");
87     return 0;
88
89 }       /* end of datapidchk */
90
91 #if UNIT_TEST
92
93 /***********************************************************************
94  * main for doing unit testing
95  ***********************************************************************/
96 int
97 main(ac, ag)
98 int ac;
99 char **ag;
100 {
101
102 int size=1234;
103 char *buffer;
104 int ret;
105 char *errmsg;
106
107     if ((buffer=(char *)malloc(size)) == NULL ) {
108         perror("malloc");
109         exit(2);
110     }
111
112
113     datapidgen(-1, buffer, size, 3);
114
115 /***
116 fwrite(buffer, size, 1, stdout);
117 fwrite("\n", 1, 1, stdout);
118 ****/
119
120     printf("datapidgen(-1, buffer, size, 3)\n");
121
122     ret=datapidchk(-1, buffer, size, 3, &errmsg);
123     printf("datapidchk(-1, buffer, %d, 3, &errmsg) returned %d %s\n",
124         size, ret, errmsg);
125     ret=datapidchk(-1, &buffer[1], size-1, 4, &errmsg);
126     printf("datapidchk(-1, &buffer[1], %d, 4, &errmsg) returned %d %s\n",
127         size-1, ret, errmsg);
128
129     buffer[25]= 0x0;
130     buffer[26]= 0x0;
131     buffer[27]= 0x0;
132     buffer[28]= 0x0;
133     printf("changing char 25-28\n");
134
135     ret=datapidchk(-1, &buffer[1], size-1, 4, &errmsg);
136     printf("datapidchk(-1, &buffer[1], %d, 4, &errmsg) returned %d %s\n",
137         size-1, ret, errmsg);
138
139 printf("------------------------------------------\n");
140
141     datapidgen(getpid(), buffer, size, 5);
142
143 /*******
144 fwrite(buffer, size, 1, stdout);
145 fwrite("\n", 1, 1, stdout);
146 ******/
147
148     printf("\ndatapidgen(getpid(), buffer, size, 5)\n");
149
150     ret=datapidchk(getpid(), buffer, size, 5, &errmsg);
151     printf("datapidchk(getpid(), buffer, %d, 5, &errmsg) returned %d %s\n",
152         size, ret, errmsg);
153
154     ret=datapidchk(getpid(), &buffer[1], size-1, 6, &errmsg);
155     printf("datapidchk(getpid(), &buffer[1], %d, 6, &errmsg) returned %d %s\n",
156         size-1, ret, errmsg);
157
158     buffer[25]= 0x0;
159     printf("changing char 25\n");
160
161     ret=datapidchk(getpid(), &buffer[1], size-1, 6, &errmsg);
162     printf("datapidchk(getpid(), &buffer[1], %d, 6, &errmsg) returned %d %s\n",
163         size-1, ret, errmsg);
164
165     exit(0);
166 }
167
168 #endif
169