1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2000 Silicon Graphics, Inc.
10 12345678901234567890123456789012
11 1234567890123456789012345678901234567890123456789012345678901234
12 ________________________________________________________________
13 < pid >< word-offset in file (same #) >< pid >
15 1234567890123456789012345678901234567890123456789012345678901234
16 ________________________________________________________________
17 < pid >< offset in file of this word >< pid >
20 8 bits to a bytes == character
25 #include <sys/param.h>
31 static char Errmsg[80];
33 #define LOWER16BITS(X) (X & 0177777)
34 #define LOWER32BITS(X) (X & 0xffffffff)
37 #define HIGHBITS(WRD, bits) ( (-1 << (64-bits)) & WRD)
38 #define LOWBITS(WRD, bits) ( (-1 >> (64-bits)) & WRD)
41 #define NBPBYTE 8 /* number bits per byte */
47 /***********************************************************************
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 >
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 ***********************************************************************/
60 datapidgen(pid, buffer, bsize, offset)
66 return -1; /* not support on non-64 bits word machines */
71 /***********************************************************************
74 ***********************************************************************/
76 datapidchk(pid, buffer, bsize, offset, errmsg)
83 if ( errmsg != NULL ) {
86 sprintf(Errmsg, "Not supported on this OS.");
89 } /* end of datapidchk */
93 /***********************************************************************
94 * main for doing unit testing
95 ***********************************************************************/
107 if ((buffer=(char *)malloc(size)) == NULL ) {
113 datapidgen(-1, buffer, size, 3);
116 fwrite(buffer, size, 1, stdout);
117 fwrite("\n", 1, 1, stdout);
120 printf("datapidgen(-1, buffer, size, 3)\n");
122 ret=datapidchk(-1, buffer, size, 3, &errmsg);
123 printf("datapidchk(-1, buffer, %d, 3, &errmsg) returned %d %s\n",
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);
133 printf("changing char 25-28\n");
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);
139 printf("------------------------------------------\n");
141 datapidgen(getpid(), buffer, size, 5);
144 fwrite(buffer, size, 1, stdout);
145 fwrite("\n", 1, 1, stdout);
148 printf("\ndatapidgen(getpid(), buffer, size, 5)\n");
150 ret=datapidchk(getpid(), buffer, size, 5, &errmsg);
151 printf("datapidchk(getpid(), buffer, %d, 5, &errmsg) returned %d %s\n",
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);
159 printf("changing char 25\n");
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);