(no commit message)
[openafs-wiki.git] / OpenAFSPioctlInterfaceDoc.mdwn
1 <div>
2   <ul>
3     <li><a href="#PSetACL">PSetACL</a></li>
4     <li><a href="#PGetACL">PGetACL</a></li>
5     <li><a href="#PSetTokens">PSetTokens</a></li>
6     <li><a href="#PGetVolumeStatus">PGetVolumeStatus</a></li>
7     <li><a href="#PSetVolumeStatus">PSetVolumeStatus</a></li>
8     <li><a href="#PFlush">PFlush</a></li>
9     <li><a href="#PBogus  PNoop">PBogus &amp; PNoop</a></li>
10     <li><a href="#PGetTokens">PGetTokens</a></li>
11     <li><a href="#PUnlog">PUnlog</a></li>
12     <li><a href="#PCheckServers">PCheckServers</a></li>
13     <li><a href="#PCheckVolNames">PCheckVolNames</a></li>
14     <li><a href="#PCheckAuth">PCheckAuth</a></li>
15     <li><a href="#PFindVolume">PFindVolume</a></li>
16     <li><a href="#PViceAccess">PViceAccess</a></li>
17     <li><a href="#PGetFID">PGetFID</a></li>
18     <li><a href="#PSetCacheSize">PSetCacheSize</a></li>
19     <li><a href="#PRemoveCallback">PRemoveCallback</a></li>
20     <li><a href="#PNewCell">PNewCell</a></li>
21     <li><a href="#PListCells">PListCells</a></li>
22     <li><a href="#PRemoveMount">PRemoveMount</a></li>
23     <li><a href="#PNewStatMount">PNewStatMount</a></li>
24     <li><a href="#PGetFileCell">PGetFileCell</a></li>
25     <li><a href="#PGetWSCell">PGetWSCell</a></li>
26     <li><a href="#PMariner">PMariner</a></li>
27     <li><a href="#PGetUserCell">PGetUserCell</a></li>
28     <li><a href="#PVenusLogging">PVenusLogging</a></li>
29     <li><a href="#PGetCellStatus">PGetCellStatus</a></li>
30     <li><a href="#PSetCellStatus">PSetCellStatus</a></li>
31     <li><a href="#PFlushVolumeData">PFlushVolumeData</a></li>
32     <li><a href="#PSetSysName">PSetSysName</a></li>
33     <li><a href="#PExportAfs">PExportAfs</a></li>
34     <li><a href="#PGetCacheSize">PGetCacheSize</a></li>
35     <li><a href="#PGetVnodeXStatus">PGetVnodeXStatus</a></li>
36     <li><a href="#PSetSPrefs33">PSetSPrefs33</a></li>
37     <li><a href="#PGetSPrefs">PGetSPrefs</a></li>
38     <li><a href="#PGag">PGag</a></li>
39     <li><a href="#PTwiddleRx">PTwiddleRx</a></li>
40     <li><a href="#PSetSPrefs">PSetSPrefs</a></li>
41     <li><a href="#PStoreBehind">PStoreBehind</a></li>
42     <li><a href="#PGCPAGs">PGCPAGs</a></li>
43     <li><a href="#PGetInitParams">PGetInitParams</a></li>
44     <li><a href="#PGetCPrefs">PGetCPrefs</a></li>
45     <li><a href="#PSetCPrefs">PSetCPrefs</a></li>
46     <li><a href="#PFlushMount">PFlushMount</a></li>
47     <li><a href="#PRxStatProc">PRxStatProc</a></li>
48     <li><a href="#PRxStatPeer">PRxStatPeer</a></li>
49     <li><a href="#PGetRxkcrypt">PGetRxkcrypt</a></li>
50     <li><a href="#PSetRxkcrypt">PSetRxkcrypt</a></li>
51     <li><a href="#PSetClientContext">PSetClientContext</a></li>
52   </ul>
53 </div>
54
55 ## <a name="PSetACL"></a> [[PSetACL]]
56
57 <dl>
58   <dt><strong>Group</strong></dt>
59   <dd> V </dd>
60   <dt><strong>Function</strong></dt>
61   <dd> VIOCSETAL (1) - Set access control list </dd>
62   <dt><strong>Arguments</strong></dt>
63   <dd> the ACL being set </dd>
64   <dt><strong>Outcome</strong></dt>
65   <dd> Changed ACL, via direct writing to the wire </dd>
66 </dl>
67
68 **Errors**
69
70 - EINVAL - if some of the standard arguments aren't set
71
72 <dl>
73   <dt><strong>Side Effects</strong></dt>
74   <dd> none listed </dd>
75 </dl>
76
77 ## <a name="PGetACL"></a> [[PGetACL]]
78
79 <dl>
80   <dt><strong>Group</strong></dt>
81   <dd> V </dd>
82   <dt><strong>Function</strong></dt>
83   <dd> VIOCGETAL (2) - Get access control list </dd>
84   <dt><strong>Arguments</strong></dt>
85   <dd> none </dd>
86   <dt><strong>Outcome</strong></dt>
87   <dd> Obtain the ACL, based on file ID </dd>
88 </dl>
89
90 **Errors**
91
92 - EINVAL - if some of the standard arguments aren't set
93 - ERANGE - if the vnode of the file id is too large
94 - return -1 - if getting the ACL failed
95
96 <dl>
97   <dt><strong>Side Effects</strong></dt>
98   <dd> none listed, although there is a hack to tell which type of ACL is being returned, checks the top 2-bytes to judge what type of ACL is it, only for dfs xlator ACLs </dd>
99 </dl>
100
101 ## <a name="PSetTokens"></a> [[PSetTokens]]
102
103 <dl>
104   <dt><strong>Group</strong></dt>
105   <dd> V </dd>
106   <dt><strong>Function</strong></dt>
107   <dd> VIOCSETTOK (3) - Set authentication tokens </dd>
108   <dt><strong>Arguments</strong></dt>
109   <dd> the krb tickets from which to set the afs tokens </dd>
110   <dt><strong>Outcome</strong></dt>
111   <dd> Set the Tokens for a specific cell name, unless there is none set, then default to primary </dd>
112 </dl>
113
114 **Errors**
115
116 - EINVAL - if the ticket is either too long or too short
117 - EIO - if the AFS initState is below 101
118 - ESRCH - if the cell for which the Token is being set can't be found
119
120 <dl>
121   <dt><strong>Side Effects</strong></dt>
122   <dd> none listed </dd>
123 </dl>
124
125 ## <a name="PGetVolumeStatus"></a> [[PGetVolumeStatus]]
126
127 <dl>
128   <dt><strong>Group</strong></dt>
129   <dd> V </dd>
130   <dt><strong>Function</strong></dt>
131   <dd> VIOCGETVOLSTAT (4) - Get volume status </dd>
132   <dt><strong>Arguments</strong></dt>
133   <dd> none </dd>
134   <dt><strong>Outcome</strong></dt>
135   <dd> The staus of a volume(based on the FID of the volume), or an offline message/motd </dd>
136 </dl>
137
138 **Errors**
139
140 - EINVAL: if some of the default arguments don't exist
141
142 <dl>
143   <dt><strong>Side Effects</strong></dt>
144   <dd> none listed </dd>
145 </dl>
146
147 ## <a name="PSetVolumeStatus"></a> [[PSetVolumeStatus]]
148
149 <dl>
150   <dt><strong>Group</strong></dt>
151   <dd> V </dd>
152   <dt><strong>Function</strong></dt>
153   <dd> VIOCSETVOLSTAT (5) - Set volume status </dd>
154   <dt><strong>Arguments</strong></dt>
155   <dd> values to set the status at, offline message, message of the day, volume name, minimum quota, maximum quota </dd>
156   <dt><strong>Outcome</strong></dt>
157   <dd> Set the status of a volume, including any offline messages, a minimum quota, and a maximum quota </dd>
158 </dl>
159
160 **Errors**
161
162 - EINVAL - if some of the default arguments don't exist
163 - EROFS - if the volume is read only, or a backup volume
164 - ENODEV - if the volume can't be accessed
165 - [[E2BIG]] - if the volume name, offline message, and motd are too big
166
167 <dl>
168   <dt><strong>Side Effects</strong></dt>
169   <dd> none listed </dd>
170 </dl>
171
172 ## <a name="PFlush"></a> PFlush
173
174 <dl>
175   <dt><strong>Group</strong></dt>
176   <dd> V </dd>
177   <dt><strong>Function</strong></dt>
178   <dd> VIOCFLUSH (6) - Invalidate cache entry </dd>
179   <dt><strong>Arguments</strong></dt>
180   <dd> none </dd>
181   <dt><strong>Outcome</strong></dt>
182   <dd> Flush any information the cache manager has on an entry </dd>
183 </dl>
184
185 **Errors**
186
187 - EINVAL - if some of the initial arguments don't exist
188
189 <dl>
190   <dt><strong>Side Effects</strong></dt>
191   <dd> none listed </dd>
192 </dl>
193
194 ## <a name="PBogus  PNoop"></a> PBogus &amp; PNoop
195
196 <dl>
197   <dt><strong>Group</strong></dt>
198   <dd> V </dd>
199   <dt><strong>Function</strong></dt>
200   <dd> VIOCSTAT (7) - Get file status </dd>
201 </dl>
202
203 ----
204
205 <dl>
206   <dt><strong>Group</strong></dt>
207   <dd> V </dd>
208   <dt><strong>Function</strong></dt>
209   <dd> VIOCGETTIME (13) - Make gettime call (historic) </dd>
210 </dl>
211
212 ----
213
214 <dl>
215   <dt><strong>Group</strong></dt>
216   <dd> V </dd>
217   <dt><strong>Function</strong></dt>
218   <dd> VIOCPREFETCH (15) - Pre-fetch a file </dd>
219 </dl>
220
221 ----
222
223 <dl>
224   <dt><strong>Group</strong></dt>
225   <dd> V </dd>
226   <dt><strong>Function</strong></dt>
227   <dd> VIOCNOP (16) - No-op (historic) </dd>
228 </dl>
229
230 ----
231
232 <dl>
233   <dt><strong>Group</strong></dt>
234   <dd> V </dd>
235   <dt><strong>Function</strong></dt>
236   <dd> VIOCENGROUP (17) - Enable group access (historic) </dd>
237 </dl>
238
239 ----
240
241 <dl>
242   <dt><strong>Group</strong></dt>
243   <dd> V </dd>
244   <dt><strong>Function</strong></dt>
245   <dd> VIOCDISGROUP (18) - Disable group access (historic) </dd>
246 </dl>
247
248 ----
249
250 <dl>
251   <dt><strong>Group</strong></dt>
252   <dd> V </dd>
253   <dt><strong>Function</strong></dt>
254   <dd> VIOCLISTGROUPS (19) - List enabled and disabled groups (historic) </dd>
255 </dl>
256
257 ----
258
259 <dl>
260   <dt><strong>Group</strong></dt>
261   <dd> V </dd>
262   <dt><strong>Function</strong></dt>
263   <dd> VIOC_FPRIOSTATUS (57) - arla: set file 'prio' </dd>
264 </dl>
265
266 ----
267
268 <dl>
269   <dt><strong>Group</strong></dt>
270   <dd> V </dd>
271   <dt><strong>Function</strong></dt>
272   <dd> VIOC_FHGET (58) - arla: fallback getfh </dd>
273 </dl>
274
275 ----
276
277 <dl>
278   <dt><strong>Group</strong></dt>
279   <dd> V </dd>
280   <dt><strong>Function</strong></dt>
281   <dd> VIOC_FHOPEN (59) - arla: fallback fhopen </dd>
282 </dl>
283
284 ----
285
286 <dl>
287   <dt><strong>Group</strong></dt>
288   <dd> V </dd>
289   <dt><strong>Function</strong></dt>
290   <dd> VIOC_XFSDEBUG (60) - arla: controls xfsdebug </dd>
291 </dl>
292
293 ----
294
295 <dl>
296   <dt><strong>Group</strong></dt>
297   <dd> V </dd>
298   <dt><strong>Function</strong></dt>
299   <dd> VIOC_ARLADEBUG (61) - arla: controls arla debug </dd>
300 </dl>
301
302 ----
303
304 <dl>
305   <dt><strong>Group</strong></dt>
306   <dd> V </dd>
307   <dt><strong>Function</strong></dt>
308   <dd> VIOC_AVIATOR (62) - arla: debug interfac </dd>
309 </dl>
310
311 ----
312
313 <dl>
314   <dt><strong>Group</strong></dt>
315   <dd> V </dd>
316   <dt><strong>Function</strong></dt>
317   <dd> VIOC_XFSDEBUG_PRINT (63) - arla: print xfs status </dd>
318 </dl>
319
320 ----
321
322 <dl>
323   <dt><strong>Group</strong></dt>
324   <dd> V </dd>
325   <dt><strong>Function</strong></dt>
326   <dd> VIOC_CALCULATE_CACHE (64) - arla: force cache check </dd>
327 </dl>
328
329 ----
330
331 <dl>
332   <dt><strong>Group</strong></dt>
333   <dd> V </dd>
334   <dt><strong>Function</strong></dt>
335   <dd> VIOC_BREAKCELLBACK (65) - arla: break callback </dd>
336 </dl>
337
338 ----
339
340 <dl>
341   <dt><strong>Group</strong></dt>
342   <dd> V </dd>
343   <dt><strong>Function</strong></dt>
344   <dd> VIOCWAITFOREVER (23) - Wait for dead servers forever (historic) </dd>
345 </dl>
346
347 ## <a name="PGetTokens"></a> [[PGetTokens]]
348
349 <dl>
350   <dt><strong>Group</strong></dt>
351   <dd> V </dd>
352   <dt><strong>Function</strong></dt>
353   <dd> VIOCGETTOK (8) - Get authentication tokens </dd>
354   <dt><strong>Arguments</strong></dt>
355   <dd> An integer that corresponds to a user id, which in turn corresponds to a token </dd>
356   <dt><strong>Outcome</strong></dt>
357   <dd> If the the input parameter exists, get the token that corresponds to the parameter value, if there is no token at this value, get the token for the first cell </dd>
358 </dl>
359
360 **Errors**
361
362 - EIO - if the afs daemon hasn't started yet
363 - EDOM - if the input parameter is out of the bounds of the available tokens
364 - ENOTCONN - if there aren't tokens for this cell
365
366 <dl>
367   <dt><strong>Side Effects</strong></dt>
368   <dd> none listed, although it's a weird interface (from comments in code) </dd>
369 </dl>
370
371 ## <a name="PUnlog"></a> PUnlog
372
373 <dl>
374   <dt><strong>Group</strong></dt>
375   <dd> V </dd>
376   <dt><strong>Function</strong></dt>
377   <dd> VIOCUNLOG (9) - Invalidate tokens </dd>
378   <dt><strong>Arguments</strong></dt>
379   <dd> none </dd>
380   <dt><strong>Outcome</strong></dt>
381   <dd> remove tokens from a user, specified by a user id </dd>
382 </dl>
383
384 **Errors**
385
386 - EIO - if the afs daemon hasn't started yet
387
388 <dl>
389   <dt> $ <strong>Side Effects</strong></dt>
390   <dd> set's the token's time to 0, which then causes it to be removed </dd>
391 </dl>
392
393 //////////////////////////////////////////
394
395 <dl>
396   <dt><strong>Group</strong></dt>
397   <dd> V </dd>
398   <dt><strong>Function</strong></dt>
399   <dd> VIOCUNPAG (21) - Invalidate PAG </dd>
400 </dl>
401
402 ///////////////////////////////////////// Unlog is the same as un-pag in [[OpenAFS]]
403
404 ## <a name="PCheckServers"></a> [[PCheckServers]]
405
406 <dl>
407   <dt><strong>Group</strong></dt>
408   <dd> V </dd>
409   <dt><strong>Function</strong></dt>
410   <dd> VIOCCKSERV (10) - Check that servers are up </dd>
411   <dt><strong>Arguments</strong></dt>
412   <dd> The name of the cell that the servers will be a part of. </dd>
413   <dt><strong>Outcome</strong></dt>
414   <dd> Either a fast check (where it doesn't contact servers) or a local check (checks local cell only) </dd>
415 </dl>
416
417 **Errors**
418
419 - EIO - if the afs daemon hasn't started yet
420 - EACCES - if the user doesn't have super-user credentials
421 - ENOENT - if we are unable to obtain the cell
422
423 <dl>
424   <dt><strong>Side Effects</strong></dt>
425   <dd> none listed </dd>
426 </dl>
427
428 ## <a name="PCheckVolNames"></a> [[PCheckVolNames]]
429
430 <dl>
431   <dt><strong>Group</strong></dt>
432   <dd> V </dd>
433   <dt><strong>Function</strong></dt>
434   <dd> VIOCCKBACK (11) - Check backup volume mappings </dd>
435   <dt><strong>Arguments</strong></dt>
436   <dd> none </dd>
437   <dt><strong>Outcome</strong></dt>
438   <dd> Check the root volume, and then check the names if the volume check variable is set to force, has expired, is busy, or if the mount points variable is set </dd>
439 </dl>
440
441 **Errors**
442
443 - EIO - if the afs daemon hasn't started yet
444
445 <dl>
446   <dt><strong>Side Effects</strong></dt>
447   <dd> none listed </dd>
448 </dl>
449
450 ## <a name="PCheckAuth"></a> [[PCheckAuth]]
451
452 <dl>
453   <dt><strong>Group</strong></dt>
454   <dd> V </dd>
455   <dt><strong>Function</strong></dt>
456   <dd> VIOCCKCONN (12) - Check connections for a user </dd>
457   <dt><strong>Arguments</strong></dt>
458   <dd> none </dd>
459   <dt><strong>Outcome</strong></dt>
460   <dd> check to see if a user has the correct authentication. If so, allow access </dd>
461 </dl>
462
463 **Errors**
464
465 - EACCES - if no user is specified
466 - EACCES - if the user has no tokens set
467 - EACCES - if the users tokens are bad
468
469 <dl>
470   <dt><strong>Side Effects</strong></dt>
471   <dd> check the connections to all the servers specified </dd>
472 </dl>
473
474 ## <a name="PFindVolume"></a> [[PFindVolume]]
475
476 <dl>
477   <dt><strong>Group</strong></dt>
478   <dd> V </dd>
479   <dt><strong>Function</strong></dt>
480   <dd> VIOCWHEREIS (14) - Find out where a volume is located </dd>
481   <dt><strong>Arguments</strong></dt>
482   <dd> none </dd>
483   <dt><strong>Outcome</strong></dt>
484   <dd> find a volume, based on a volume file id </dd>
485 </dl>
486
487 **Errors**
488
489 - EINVAL - if some of the default arguments don't exist
490 - ENODEV - if there is no such volume
491
492 <dl>
493   <dt><strong>Side Effects</strong></dt>
494   <dd> check each of the servers specified </dd>
495 </dl>
496
497 ## <a name="PViceAccess"></a> [[PViceAccess]]
498
499 <dl>
500   <dt><strong>Group</strong></dt>
501   <dd> V </dd>
502   <dt><strong>Function</strong></dt>
503   <dd> VIOCACCESS (20) - Access using PRS_FS bits </dd>
504   <dt><strong>Arguments</strong></dt>
505   <dd> none </dd>
506   <dt><strong>Outcome</strong></dt>
507   <dd> check to make sure access is allowed </dd>
508 </dl>
509
510 **Errors**
511
512 - EINVAL - if some of the initial arguments aren't set
513 - EACCES - if access is denied
514
515 <dl>
516   <dt><strong>Side Effects</strong></dt>
517   <dd> none listed </dd>
518 </dl>
519
520 ## <a name="PGetFID"></a> [[PGetFID]]
521
522 <dl>
523   <dt><strong>Group</strong></dt>
524   <dd> V </dd>
525   <dt><strong>Function</strong></dt>
526   <dd> VIOCETFID (22) - Get file ID quickly </dd>
527   <dt><strong>Arguments</strong></dt>
528   <dd> none </dd>
529   <dt><strong>Outcome</strong></dt>
530   <dd> get the file id of some file </dd>
531 </dl>
532
533 **Errors**
534
535 - EINVAL - if some fo the initial arguments aren't set
536
537 <dl>
538   <dt><strong>Side Effects</strong></dt>
539   <dd> none listed </dd>
540 </dl>
541
542 ## <a name="PSetCacheSize"></a> [[PSetCacheSize]]
543
544 <dl>
545   <dt><strong>Group</strong></dt>
546   <dd> V </dd>
547   <dt><strong>Function</strong></dt>
548   <dd> VIOCSETCACHESIZE (24) - Set venus cache size in 1000 units </dd>
549   <dt><strong>Arguments</strong></dt>
550   <dd> The size the venus cache should be set to </dd>
551   <dt><strong>Outcome</strong></dt>
552   <dd> Set the cache size based on user intput. If no size is given, set it to the default [[OpenAFS]] cache size </dd>
553 </dl>
554
555 **Errors**
556
557 - EACCES - if the user doen't have super-user credentials
558 - EROFS - if the cache is set to be in memory
559
560 <dl>
561   <dt><strong>Side Effects</strong></dt>
562   <dd> recompute the general cache parameters for every single block allocated </dd>
563 </dl>
564
565 ## <a name="PRemoveCallback"></a> [[PRemoveCallback]]
566
567 <dl>
568   <dt><strong>Group</strong></dt>
569   <dd> V </dd>
570   <dt><strong>Function</strong></dt>
571   <dd> VIOCFLUSHCB (25) - Flush callback only </dd>
572   <dt><strong>Arguments</strong></dt>
573   <dd> none </dd>
574   <dt><strong>Outcome</strong></dt>
575   <dd> Flushes callbacks, by setting the length of callbacks to one, setting the next callback to be sent to the CB_DROPPED value, and then dequeue's everything else </dd>
576 </dl>
577
578 **Errors**
579
580 - EINVAL - if some of the initial default arguments aren't set return's 0 - if the volume is set to read-only
581
582 <dl>
583   <dt><strong>Side Effects</strong></dt>
584   <dd> none listed </dd>
585 </dl>
586
587 ## <a name="PNewCell"></a> [[PNewCell]]
588
589 <dl>
590   <dt><strong>Group</strong></dt>
591   <dd> V </dd>
592   <dt><strong>Function</strong></dt>
593   <dd> VIOCNEWCELL (26) - Configure new cell </dd>
594   <dt><strong>Arguments</strong></dt>
595   <dd> the name of the cell, the hosts that will be a part of the cell, whether or not it's linked with another cell, the other cel it's linked with, the file server port, and the volume server port </dd>
596   <dt><strong>Outcome</strong></dt>
597   <dd> creates a new cell </dd>
598 </dl>
599
600 **Errors**
601
602 - EIO - if the afs daemon hasn't started yet
603 - EACCES - if the user doesn't have super-user credentials
604 - EINVAL - if some 'magic' var doesn't have a certain bit set
605
606 <dl>
607   <dt><strong>Side Effects</strong></dt>
608   <dd> none listed </dd>
609 </dl>
610
611 ## <a name="PListCells"></a> [[PListCells]]
612
613 <dl>
614   <dt><strong>Group</strong></dt>
615   <dd> V </dd>
616   <dt><strong>Function</strong></dt>
617   <dd> VIOCGETCELL (27) - Get cell info </dd>
618   <dt><strong>Arguments</strong></dt>
619   <dd> The cell index of a specific cell </dd>
620   <dt><strong>Outcome</strong></dt>
621   <dd> Lists the cells server names and addresses </dd>
622 </dl>
623
624 **Errors**
625
626 - EIO - if the afs daemon hasn't started yet
627 - EDOM - if there is no cell asked about
628
629 <dl>
630   <dt><strong>Side Effects</strong></dt>
631   <dd> none listed </dd>
632 </dl>
633
634 ## <a name="PRemoveMount"></a> [[PRemoveMount]]
635
636 <dl>
637   <dt><strong>Group</strong></dt>
638   <dd> V </dd>
639   <dt><strong>Function</strong></dt>
640   <dd> VIOC_AFS_DELETE_MT_PT (28) - Delete mount point </dd>
641   <dt><strong>Arguments</strong></dt>
642   <dd> none // I DON'T THINK </dd>
643   <dt><strong>Outcome</strong></dt>
644   <dd> Ensure that everything is ok, before deleting the mountpoint. If not, don't delete. Delete a mount point based on a file id </dd>
645 </dl>
646
647 **Errors**
648
649 - EINVAL - if some of default arguments don't exist
650 - ENOTDIR - if the argument to remove is not a directory
651 - ENOENT - if there is no cache to remove the mount point from
652 - ENOENT - if a vcache doesn't exist
653
654 <dl>
655   <dt><strong>Side Effects</strong></dt>
656   <dd> none listed </dd>
657 </dl>
658
659 ## <a name="PNewStatMount"></a> [[PNewStatMount]]
660
661 <dl>
662   <dt><strong>Group</strong></dt>
663   <dd> V </dd>
664   <dt><strong>Function</strong></dt>
665   <dd> VIOC_AFS_STAT_MT_PT (29) - Stat mount point </dd>
666   <dt><strong>Arguments</strong></dt>
667   <dd> the last component in a path, related to mountpoint that we're looking for information about </dd>
668   <dt><strong>Outcome</strong></dt>
669   <dd> get the volume, and cell, as well as the link data for a mount point </dd>
670 </dl>
671
672 **Errors**
673
674 - EINVAL - if some of the default initial arguments aren't set
675 - ENOTDIR - if the 'mount point' argument isn't a directory
676 - EIO - if the link data can't be accessed
677
678 <dl>
679   <dt><strong>Side Effects</strong></dt>
680   <dd> none listed </dd>
681 </dl>
682
683 ## <a name="PGetFileCell"></a> [[PGetFileCell]]
684
685 <dl>
686   <dt><strong>Group</strong></dt>
687   <dd> V </dd>
688   <dt><strong>Function</strong></dt>
689   <dd> VIOC_FILE_CELL_NAME (30) - Get cell in which file lives </dd>
690   <dt><strong>Arguments</strong></dt>
691   <dd> none </dd>
692   <dt><strong>Outcome</strong></dt>
693   <dd> Get a cell based on a passed in on a passed in file id </dd>
694 </dl>
695
696 **Errors**
697
698 - EINVAL - if someo f the default initial arguments aren't set
699 - ESRCH - if the file isn't part of a cell
700
701 <dl>
702   <dt><strong>Side Effects</strong></dt>
703   <dd> none listed </dd>
704 </dl>
705
706 ## <a name="PGetWSCell"></a> [[PGetWSCell]]
707
708 <dl>
709   <dt><strong>Group</strong></dt>
710   <dd> V </dd>
711   <dt><strong>Function</strong></dt>
712   <dd> VIOC_GET_WS_CELL (31) - Get cell in which workstation lives </dd>
713   <dt><strong>Arguments</strong></dt>
714   <dd> none </dd>
715   <dt><strong>Outcome</strong></dt>
716   <dd> Get the primary cell that the machine is a part of </dd>
717 </dl>
718
719 **Errors**
720
721 - EIO - if the afs daemon hasn't started yet
722 - ESRCH - if the machine isn't part of a cell, for whatever reason
723
724 <dl>
725   <dt><strong>Side Effects</strong></dt>
726   <dd> none listed </dd>
727 </dl>
728
729 ## <a name="PMariner"></a> PMariner
730
731 <dl>
732   <dt><strong>Group</strong></dt>
733   <dd> V </dd>
734   <dt><strong>Function</strong></dt>
735   <dd> VIOC_AFS_MARINER_HOST (32) - Get/set mariner (cache manager monitor) host </dd>
736   <dt><strong>Arguments</strong></dt>
737   <dd> none </dd>
738   <dt><strong>Outcome</strong></dt>
739   <dd> depending on what whether or not a variable is set, either get the host for the cache manager monitor, or set the old address, and give it a new address </dd>
740 </dl>
741
742 **Errors** turn off mariner
743
744 <dl>
745   <dt><strong>Side Effects</strong></dt>
746   <dd> none listed </dd>
747 </dl>
748
749 ## <a name="PGetUserCell"></a> [[PGetUserCell]]
750
751 <dl>
752   <dt><strong>Group</strong></dt>
753   <dd> V </dd>
754   <dt><strong>Function</strong></dt>
755   <dd> VIOC_GET_PRIMARY_CELL (33) - Get primary cell for caller </dd>
756   <dt><strong>Arguments</strong></dt>
757   <dd> none </dd>
758   <dt><strong>Outcome</strong></dt>
759   <dd> get the primary cell for a certain user, based on the user's uid </dd>
760 </dl>
761
762 **Errors**
763
764 - ESRCH - if the user corresponding to the uid doesn't have a primary cell specified
765
766 <dl>
767   <dt><strong>Side Effects</strong></dt>
768   <dd> none listed </dd>
769 </dl>
770
771 ## <a name="PVenusLogging"></a> [[PVenusLogging]]
772
773 <dl>
774   <dt><strong>Group</strong></dt>
775   <dd> V </dd>
776   <dt><strong>Function</strong></dt>
777   <dd> VIOC_VENUSLOG (34) - Enable/Disable venus logging </dd>
778   <dt><strong>Arguments</strong></dt>
779   <dd> none </dd>
780   <dt><strong>Outcome</strong></dt>
781   <dd> obsoleted, perhaps should be PBogus </dd>
782 </dl>
783
784 **Errors**
785
786 - EINVAL - this is all the function does, perhaps this pioctl should be PBogus
787
788 <dl>
789   <dt><strong>Side Effects</strong></dt>
790   <dd> always throws an error </dd>
791 </dl>
792
793 ## <a name="PGetCellStatus"></a> [[PGetCellStatus]]
794
795 <dl>
796   <dt><strong>Group</strong></dt>
797   <dd> V </dd>
798   <dt><strong>Function</strong></dt>
799   <dd> VIOC_GETCELLSTATUS (35) - Get cell status info </dd>
800   <dt><strong>Arguments</strong></dt>
801   <dd> the cell you want status information on </dd>
802   <dt><strong>Outcome</strong></dt>
803   <dd> returns the state of the cell as defined in a struct cell </dd>
804 </dl>
805
806 **Errors**
807
808 - EIO - the afs daemon hasn't started yet
809 - ENOENT - the cell doesn't exist
810
811 <dl>
812   <dt><strong>Side Effects</strong></dt>
813   <dd> none listed </dd>
814 </dl>
815
816 ## <a name="PSetCellStatus"></a> [[PSetCellStatus]]
817
818 <dl>
819   <dt><strong>Group</strong></dt>
820   <dd> V </dd>
821   <dt><strong>Function</strong></dt>
822   <dd> VIOC_SETCELLSTATUS (36) - Set corresponding info </dd>
823   <dt><strong>Arguments</strong></dt>
824   <dd> The cell you want to set information about, and the values you want to set </dd>
825   <dt><strong>Outcome</strong></dt>
826   <dd> Set the state of the cell in a defined struct cell, based on whether or not [[SetUID]] is allowed </dd>
827 </dl>
828
829 **Errors**
830
831 - EIO - the afs daemon hasn't started yet
832 - EACCES - the user does not have super-user credentials
833
834 <dl>
835   <dt><strong>Side Effects</strong></dt>
836   <dd> none listed </dd>
837 </dl>
838
839 ## <a name="PFlushVolumeData"></a> [[PFlushVolumeData]]
840
841 <dl>
842   <dt><strong>Group</strong></dt>
843   <dd> V </dd>
844   <dt><strong>Function</strong></dt>
845   <dd> VIOC_FLUSHVOLUME (37) - Flush whole volume's data </dd>
846   <dt><strong>Arguments</strong></dt>
847   <dd> none //ALTHOUGH MAYBE A VCACHE CONTAINING WHICH VOLUME </dd>
848   <dt><strong>Outcome</strong></dt>
849   <dd> Wipe everything on the volume. Dependent on which platform this is is for, as to how it's done </dd>
850 </dl>
851
852 **Errors**
853
854 - EINVAL - some of the initial default arguments aren't set
855 - EIO - the afs daemon hasn't started yet
856
857 <dl>
858   <dt><strong>Side Effects</strong></dt>
859   <dd> Does not flush a file that a user has open and is using, because it will be re-created on next write. Also purges the dnlc, because things are screwed up </dd>
860 </dl>
861
862 ## <a name="PSetSysName"></a> [[PSetSysName]]
863
864 <dl>
865   <dt><strong>Group</strong></dt>
866   <dd> V </dd>
867   <dt><strong>Function</strong></dt>
868   <dd> VIOC_AFS_SYSNAME (38) - Change @sys value </dd>
869   <dt><strong>Arguments</strong></dt>
870   <dd> a new value for @sys </dd>
871   <dt><strong>Outcome</strong></dt>
872   <dd> Set the value of @sys if these things work: if the input isn't too long or if input doesn't start with .0 or ..0 </dd>
873 </dl>
874
875 **Errors**
876
877 - EINVAL - if afsd isn't runing
878 - EINVAL - if the new sysname is too large
879 - EINVAL - if the new sysname causes issues(starts with a .0 or a ..0
880 - EINVAL - if there is no PAG set in the credentials
881 - EINVAL - if the user of a PAG can't be found
882 - EINVAL - if (!(exporter = au-&gt;exporter)) // NOT SURE ON THIS
883 - ENODEV - if there isn't already a system named that //I THINK
884 - EACCES - if the user doesn't have super-user credentials
885
886 <dl>
887   <dt><strong>Side Effects</strong></dt>
888   <dd> local user needs root, remote user does not (because remote user ids aren't trusted) </dd>
889 </dl>
890
891 ## <a name="PExportAfs"></a> [[PExportAfs]]
892
893 <dl>
894   <dt><strong>Group</strong></dt>
895   <dd> V </dd>
896   <dt><strong>Function</strong></dt>
897   <dd> VIOC_EXPORTAFS (39) - Export afs to nfs clients </dd>
898   <dt><strong>Arguments</strong></dt>
899   <dd> A struct Vic * EIOctl containing export values needed to change between nfs and afs </dd>
900   <dt><strong>Outcome</strong></dt>
901   <dd> //REALLY NOT SURE ON THIS... INPUT WOULD BE NICE </dd>
902 </dl>
903
904 **Errors**
905
906 - ENODEV - if the exporter doesn't exist
907 - EACCES - if the user doesn't have super-user credentials $ **Side Effects**:none listed
908
909 ## <a name="PGetCacheSize"></a> [[PGetCacheSize]]
910
911 <dl>
912   <dt><strong>Group</strong></dt>
913   <dd> V </dd>
914   <dt><strong>Function</strong></dt>
915   <dd> VIOCGETCACHEPARMS (40) - Get cache stats </dd>
916   <dt><strong>Arguments</strong></dt>
917   <dd> none </dd>
918   <dt><strong>Outcome</strong></dt>
919   <dd> Get the cache blocks, and how many of the cache blocks there are </dd>
920 </dl>
921
922 **Errors**
923
924 - none, seemingly
925
926 <dl>
927   <dt><strong>Side Effects</strong></dt>
928   <dd> none listed </dd>
929 </dl>
930
931 ## <a name="PGetVnodeXStatus"></a> [[PGetVnodeXStatus]]
932
933 <dl>
934   <dt><strong>Group</strong></dt>
935   <dd> V </dd>
936   <dt><strong>Function</strong></dt>
937   <dd> VIOCGETVCXSTATUS (41) - ??? </dd>
938   <dt><strong>Arguments</strong></dt>
939   <dd> none </dd>
940   <dt><strong>Outcome</strong></dt>
941   <dd> get's the fid, the data version, any lock, the parent vnode, the parent unique identifier, the truncation position, the callback, cbExpires(probably when the callback expires), if any access is being made, if any files are open, any users executing or writing, the 'flock' count, the states, and the move statistic </dd>
942 </dl>
943
944 **Errors**
945
946 - EINVAL - if some of the initial default arguments aren't set
947 - EACCES - if access to check the mode bits is denied
948
949 <dl>
950   <dt><strong>Side Effects</strong></dt>
951   <dd> none listed </dd>
952 </dl>
953
954 ## <a name="PSetSPrefs33"></a> [[PSetSPrefs33]]
955
956 <dl>
957   <dt><strong>Group</strong></dt>
958   <dd> V </dd>
959   <dt><strong>Function</strong></dt>
960   <dd> VIOC_SETPREFS33 (42) - Set server ranks (deprecated) </dd>
961   <dt><strong>Arguments</strong></dt>
962   <dd> the server preferences to be set </dd>
963   <dt><strong>Outcome</strong></dt>
964   <dd> set the server preferences, calling a function </dd>
965 </dl>
966
967 **Errors**
968
969 - none
970
971 <dl>
972   <dt><strong>Side Effects</strong></dt>
973   <dd> none listed </dd>
974 </dl>
975
976 ## <a name="PGetSPrefs"></a> [[PGetSPrefs]]
977
978 <dl>
979   <dt><strong>Group</strong></dt>
980   <dd> V </dd>
981   <dt><strong>Function</strong></dt>
982   <dd> VIOC_GETSPREFS (43) - Get server ranks </dd>
983   <dt><strong>Arguments</strong></dt>
984   <dd> none </dd>
985   <dt><strong>Outcome</strong></dt>
986   <dd> Get the sprefs </dd>
987 </dl>
988
989 **Errors**
990
991 - EIO - if the afs daemon hasn't started yet
992 - ENOENT - is the sprefrequest is too large
993
994 <dl>
995   <dt><strong>Side Effects</strong></dt>
996   <dd> none listed </dd>
997 </dl>
998
999 ## <a name="PGag"></a> PGag
1000
1001 <dl>
1002   <dt><strong>Group</strong></dt>
1003   <dd> V </dd>
1004   <dt><strong>Function</strong></dt>
1005   <dd> VIOC_GAG (44) - Silence Cache Manager </dd>
1006   <dt><strong>Arguments</strong></dt>
1007   <dd> The flags to either gag or de-gag the cache manager </dd>
1008   <dt><strong>Outcome</strong></dt>
1009   <dd> set the gag flags, then show these flags </dd>
1010 </dl>
1011
1012 **Errors**
1013
1014 - EACCES - if the user doesn't have super-user credentials
1015
1016 <dl>
1017   <dt><strong>Side Effects</strong></dt>
1018   <dd> none listed </dd>
1019 </dl>
1020
1021 ## <a name="PTwiddleRx"></a> [[PTwiddleRx]]
1022
1023 <dl>
1024   <dt><strong>Group</strong></dt>
1025   <dd> V </dd>
1026   <dt><strong>Function</strong></dt>
1027   <dd> VIOC_TWIDDLE (45) - Adjust RX knobs </dd>
1028   <dt><strong>Arguments</strong></dt>
1029   <dd> the previous settings of the 'knobs' </dd>
1030   <dt><strong>Outcome</strong></dt>
1031   <dd> build out the struct rxp, from a struct rx </dd>
1032 </dl>
1033
1034 **Errors**
1035
1036 - EACCES - if the user doesn't have super-user credentials
1037
1038 <dl>
1039   <dt><strong>Side Effects</strong></dt>
1040   <dd> none listed </dd>
1041 </dl>
1042
1043 ## <a name="PSetSPrefs"></a> [[PSetSPrefs]]
1044
1045 <dl>
1046   <dt><strong>Group</strong></dt>
1047   <dd> V </dd>
1048   <dt><strong>Function</strong></dt>
1049   <dd> VIOC_SETPREFS (46) - Set server ranks </dd>
1050   <dt><strong>Arguments</strong></dt>
1051   <dd> the sprefs value to want the sprefs set to </dd>
1052   <dt><strong>Outcome</strong></dt>
1053   <dd> set the sprefs using the afs_setsprefs() function </dd>
1054 </dl>
1055
1056 **Errors**
1057
1058 - EIO - if the afs daemon hasn't started yet
1059 - EACCES - if the user doesn't have super-user credentials
1060 - EINVAL - if the struct setsprefs is too large
1061 - EINVAL - if the struct setsprefs multiplied by the number of servers is too large
1062
1063 <dl>
1064   <dt><strong>Side Effects</strong></dt>
1065   <dd> none listed </dd>
1066 </dl>
1067
1068 ## <a name="PStoreBehind"></a> [[PStoreBehind]]
1069
1070 <dl>
1071   <dt><strong>Group</strong></dt>
1072   <dd> V </dd>
1073   <dt><strong>Function</strong></dt>
1074   <dd> VIOC_STORBEHIND (47) Adjust store asynchrony </dd>
1075   <dt><strong>Arguments</strong></dt>
1076   <dd> sets the sbstruct </dd>
1077   <dt><strong>Outcome</strong></dt>
1078   <dd> set asynchrony based on a file, from a struct sbstruct //I THINK </dd>
1079 </dl>
1080
1081 **Errors**
1082
1083 - EPERM - if the user doesn't have super-user credentials
1084 - EACCES - if there isn't enough access to not check the mode bits
1085
1086 <dl>
1087   <dt><strong>Side Effects</strong></dt>
1088   <dd> none listed </dd>
1089 </dl>
1090
1091 ## <a name="PGCPAGs"></a> PGCPAGs
1092
1093 <dl>
1094   <dt><strong>Group</strong></dt>
1095   <dd> V </dd>
1096   <dt><strong>Function</strong></dt>
1097   <dd> VIOC_GCPAGS (48) - Disable automatic PAG gc'ing </dd>
1098   <dt><strong>Arguments</strong></dt>
1099   <dd> none </dd>
1100   <dt><strong>Outcome</strong></dt>
1101   <dd> set the gcpags to GCPAGS_USERDISABLED </dd>
1102 </dl>
1103
1104 **Errors**
1105
1106 - EACCES - if the user doesn't have super-user credentials
1107
1108 <dl>
1109   <dt><strong>Side Effects</strong></dt>
1110   <dd> none listed </dd>
1111 </dl>
1112
1113 ## <a name="PGetInitParams"></a> [[PGetInitParams]]
1114
1115 <dl>
1116   <dt><strong>Group</strong></dt>
1117   <dd> V </dd>
1118   <dt><strong>Function</strong></dt>
1119   <dd> VIOC_GETINITPARAMS (49) - Get initial cache manager parameters </dd>
1120   <dt><strong>Arguments</strong></dt>
1121   <dd> none </dd>
1122   <dt><strong>Outcome</strong></dt>
1123   <dd> return the initial cache manager parameters </dd>
1124 </dl>
1125
1126 **Errors**
1127
1128 - [[E2BIG]] - if the initial parameters are bigger than some PIGGYSIZE
1129
1130 <dl>
1131   <dt><strong>Side Effects</strong></dt>
1132   <dd> none listed </dd>
1133 </dl>
1134
1135 ## <a name="PGetCPrefs"></a> [[PGetCPrefs]]
1136
1137 <dl>
1138   <dt><strong>Group</strong></dt>
1139   <dd> V </dd>
1140   <dt><strong>Function</strong></dt>
1141   <dd> VIOC_GETCPREFS (50) - Get client interface </dd>
1142   <dt><strong>Arguments</strong></dt>
1143   <dd> none </dd>
1144   <dt><strong>Outcome</strong></dt>
1145   <dd> get the information about the client interface </dd>
1146 </dl>
1147
1148 **Errors**
1149
1150 - - EIO - the afs daemon hasn't started yet
1151   - EINVAL - if the request is too large for the struct that will be holding it
1152
1153 <dl>
1154   <dt><strong>Side Effects</strong></dt>
1155   <dd> none listed </dd>
1156 </dl>
1157
1158 ## <a name="PSetCPrefs"></a> [[PSetCPrefs]]
1159
1160 <dl>
1161   <dt><strong>Group</strong></dt>
1162   <dd> V </dd>
1163   <dt><strong>Function</strong></dt>
1164   <dd> VIOC_SETCPREFS (51) - Set client interface </dd>
1165   <dt><strong>Arguments</strong></dt>
1166   <dd> The interfaces you want set </dd>
1167   <dt><strong>Outcome</strong></dt>
1168   <dd> set the callback interfaces addresses to those of the hosts </dd>
1169 </dl>
1170
1171 **Errors**
1172
1173 - EIO - the afs daemon hasn't started yet
1174 - EINVAL - the input is too large for the struct
1175 - ENOMEM - if there are too many servers
1176
1177 <dl>
1178   <dt><strong>Side Effects</strong></dt>
1179   <dd> none listed </dd>
1180 </dl>
1181
1182 ## <a name="PFlushMount"></a> [[PFlushMount]]
1183
1184 <dl>
1185   <dt><strong>Group</strong></dt>
1186   <dd> V </dd>
1187   <dt><strong>Function</strong></dt>
1188   <dd> VIOC_AFS_FLUSHMOUNT (52) - Flush mount symlink data </dd>
1189   <dt><strong>Arguments</strong></dt>
1190   <dd> The last part of a path to a mount point, which tells us what to flush </dd>
1191   <dt><strong>Outcome</strong></dt>
1192   <dd> remove all of the mount data from the dcache regarding a certain mount point </dd>
1193 </dl>
1194
1195 **Errors**
1196
1197 - EINVAL - if some of the initial arguments aren't set
1198 - ENOTDIR - if the initial argument for the mount point isn't a directory
1199 - ENOENT - if the dcache entry isn't set
1200
1201 ## <a name="PRxStatProc"></a> [[PRxStatProc]]
1202
1203 <dl>
1204   <dt><strong>Group</strong></dt>
1205   <dd> V </dd>
1206   <dt><strong>Function</strong></dt>
1207   <dd> VIOC_RXSTAT_PROC (53) - Control process RX statistics </dd>
1208   <dt><strong>Arguments</strong></dt>
1209   <dd> The flags that control which statistics to use </dd>
1210   <dt><strong>Outcome</strong></dt>
1211   <dd> either enable process RPCStats, disable process RPCStats, or clear the process RPCStats </dd>
1212 </dl>
1213
1214 **Errors**
1215
1216 - EACCES - if the user doesn't have super-user credentials
1217 - EINVAL - if the flag input is too long
1218
1219 <dl>
1220   <dt><strong>Side Effects</strong></dt>
1221   <dd> none listed </dd>
1222 </dl>
1223
1224 ## <a name="PRxStatPeer"></a> [[PRxStatPeer]]
1225
1226 <dl>
1227   <dt><strong>Group</strong></dt>
1228   <dd> V </dd>
1229   <dt><strong>Function</strong></dt>
1230   <dd> VIOC_RXSTAT_PEER (54) - Control peer RX statistics </dd>
1231   <dt><strong>Arguments</strong></dt>
1232   <dd> The flags that control which statistics to use </dd>
1233   <dt><strong>Outcome</strong></dt>
1234   <dd> either enable peer RPCStats, disable peer RPCStats, or clear the peer RPCStats </dd>
1235 </dl>
1236
1237 **Errors**
1238
1239 - EACCES - if the user doesn't have super-user credentials
1240 - EINVAL - if the flag input is too long
1241
1242 <dl>
1243   <dt><strong>Side Effects</strong></dt>
1244   <dd> none listed </dd>
1245 </dl>
1246
1247 ## <a name="PGetRxkcrypt"></a> [[PGetRxkcrypt]]
1248
1249 <dl>
1250   <dt><strong>Group</strong></dt>
1251   <dd> V </dd>
1252   <dt><strong>Function</strong></dt>
1253   <dd> VIOC_GETRXKCRYPT (55) - Get rxkad encryption flag </dd>
1254   <dt><strong>Arguments</strong></dt>
1255   <dd> none </dd>
1256   <dt><strong>Outcome</strong></dt>
1257   <dd> get the value of cryptall(presumably whether or not things should be encrypted </dd>
1258 </dl>
1259
1260 **Errors**
1261
1262 - none
1263
1264 <dl>
1265   <dt><strong>Side Effects</strong></dt>
1266   <dd> none listed </dd>
1267 </dl>
1268
1269 ## <a name="PSetRxkcrypt"></a> [[PSetRxkcrypt]]
1270
1271 <dl>
1272   <dt><strong>Group</strong></dt>
1273   <dd> V </dd>
1274   <dt><strong>Function</strong></dt>
1275   <dd> VIOC_SETRXKCRYPT (56) - Set rxkad encryption flag </dd>
1276   <dt><strong>Arguments</strong></dt>
1277   <dd> the argument whether or not things should be encrypted </dd>
1278   <dt><strong>Outcome</strong></dt>
1279   <dd> set whether or not things should be encrypted </dd>
1280 </dl>
1281
1282 **Errors**
1283
1284 - EPERM - if the user doesn't have super-user credentials
1285 - EINVAL - if the input is too big, or if the input is outside the bounds of what it can be set to
1286
1287 <dl>
1288   <dt><strong>Side Effects</strong></dt>
1289   <dd> none really, but may need to be modified at a later date to take into account other values for cryptall(beyond true and false) </dd>
1290 </dl>
1291
1292 ## <a name="PSetClientContext"></a> [[PSetClientContext]]
1293
1294 <dl>
1295   <dt><strong>Group</strong></dt>
1296   <dd> V </dd>
1297   <dt><strong>Function</strong></dt>
1298   <dd>[[PsetClientContext]] (99) - NFS-PAG pioctl (for knfs/rmtsysd) </dd>
1299   <dt><strong>Arguments</strong></dt>
1300   <dd> none </dd>
1301   <dt><strong>Outcome</strong></dt>
1302   <dd> Setup caller's credentials, dependent on an AIX 64-bit kernel, HPUX, SUN57 64-bit kernel, SGI 64-mips, or a need for a 32-bit ioctl </dd>
1303 </dl>
1304
1305 **Errors**
1306
1307 - none
1308
1309 <dl>
1310   <dt><strong>Side Effects</strong></dt>
1311   <dd> none listed </dd>
1312 </dl>
1313
1314 //WASN'T SURE WHAT TO DO ABOUT THESE, ALSO NOTE THAT THE ABOVE ARE JUST THE V GROUP PIOCTL()s, I CAN DOCUMENT THE C GROUP, MOST OF WHICH ARE PBogus
1315
1316 <dl>
1317   <dt><strong>Group</strong></dt>
1318   <dd> V </dd>
1319   <dt><strong>Function</strong></dt>
1320   <dd><strong>*reserved*</strong> (239) - Reserved for code expansion </dd>
1321 </dl>
1322
1323 ----
1324
1325 <dl>
1326   <dt><strong>Group</strong></dt>
1327   <dd> V </dd>
1328   <dt><strong>Function</strong></dt>
1329   <dd> VIOC_SITE1 (240) - Reserved for site-specific extensions </dd>
1330 </dl>
1331
1332 ----
1333
1334 <dl>
1335   <dt><strong>Group</strong></dt>
1336   <dd> V </dd>
1337   <dt><strong>Function</strong></dt>
1338   <dd> VIOC_STIE2 (241) - Reserved for site-specific extensions </dd>
1339 </dl>
1340
1341 ----
1342
1343 <dl>
1344   <dt><strong>Group</strong></dt>
1345   <dd> V </dd>
1346   <dt><strong>Function</strong></dt>
1347   <dd> VIOC_SITE3 (242) - Reserved for site-specific extensions </dd>
1348 </dl>
1349
1350 ----
1351
1352 <dl>
1353   <dt><strong>Group</strong></dt>
1354   <dd> V </dd>
1355   <dt><strong>Function</strong></dt>
1356   <dd> VIOC_SITE4 (243) - Reserved for site-specific extensions </dd>
1357 </dl>
1358
1359 ----
1360
1361 <dl>
1362   <dt><strong>Group</strong></dt>
1363   <dd> V </dd>
1364   <dt><strong>Function</strong></dt>
1365   <dd> VIOC_SITE5 (244) - Reserved for site-specific extensions </dd>
1366 </dl>
1367
1368 ----
1369
1370 <dl>
1371   <dt><strong>Group</strong></dt>
1372   <dd> V </dd>
1373   <dt><strong>Function</strong></dt>
1374   <dd> VIOC_SITE6 (245) - Reserved for site-specific extensions </dd>
1375 </dl>
1376
1377 ----
1378
1379 <dl>
1380   <dt><strong>Group</strong></dt>
1381   <dd> V </dd>
1382   <dt><strong>Function</strong></dt>
1383   <dd> VIOC_SITE7 (246) - Reserved for site-specific extensions </dd>
1384 </dl>
1385
1386 ----
1387
1388 <dl>
1389   <dt><strong>Group</strong></dt>
1390   <dd> V </dd>
1391   <dt><strong>Function</strong></dt>
1392   <dd> VIOC_SITE8 (247) - Reserved for site-specific extensions </dd>
1393 </dl>
1394
1395 ----
1396
1397 <dl>
1398   <dt><strong>Group</strong></dt>
1399   <dd> V </dd>
1400   <dt><strong>Function</strong></dt>
1401   <dd> VIOC_PRIVATE1 (248) - Reserved for implementation use </dd>
1402 </dl>
1403
1404 ----
1405
1406 <dl>
1407   <dt><strong>Group</strong></dt>
1408   <dd> V </dd>
1409   <dt><strong>Function</strong></dt>
1410   <dd> VIOC_PRIVATE2 (249) - Reserved for implementation use </dd>
1411 </dl>
1412
1413 ----
1414
1415 <dl>
1416   <dt><strong>Group</strong></dt>
1417   <dd> V </dd>
1418   <dt><strong>Function</strong></dt>
1419   <dd> VIOC_PRIVATE3 (250) - Reserved for implementation use </dd>
1420 </dl>
1421
1422 ----
1423
1424 <dl>
1425   <dt><strong>Group</strong></dt>
1426   <dd> V </dd>
1427   <dt><strong>Function</strong></dt>
1428   <dd> VIOC_PRIVATE4 (251) - Reserved for implementation use </dd>
1429 </dl>
1430
1431 ----
1432
1433 <dl>
1434   <dt><strong>Group</strong></dt>
1435   <dd> V </dd>
1436   <dt><strong>Function</strong></dt>
1437   <dd> VIOC_PRIVATE5 (252) - Reserved for implementation use </dd>
1438 </dl>
1439
1440 ----
1441
1442 <dl>
1443   <dt><strong>Group</strong></dt>
1444   <dd> V </dd>
1445   <dt><strong>Function</strong></dt>
1446   <dd> VIOC_PRIVATE6 (253) - Reserved for implementation use </dd>
1447 </dl>
1448
1449 ----
1450
1451 <dl>
1452   <dt><strong>Group</strong></dt>
1453   <dd> V </dd>
1454   <dt><strong>Function</strong></dt>
1455   <dd> VIOC_PRIVATE7 (254) - Reserved for implementation use </dd>
1456 </dl>
1457
1458 ----
1459
1460 <dl>
1461   <dt><strong>Group</strong></dt>
1462   <dd> V </dd>
1463   <dt><strong>Function</strong></dt>
1464   <dd> VIOC_PRIVATE8 (255) - Reserved for implementation use </dd>
1465 </dl>