summaryrefslogtreecommitdiffstats
path: root/private/inc/error.h
blob: b4bad337453641c646e829e53c06917400019e07 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
/*static char *SCCSID = "@(#)error.h    12.18 88/12/02";*/
/* WARNING If modifying this file, may have to also modify files: */
/*      src\inc\errtab.inc                                              */
/*      src\dos\error.inc                                               */
/* XENIX calls all return error codes through AX.  If an error occurred then */
/* the carry bit will be set and the error code is in AX.  If no error occurred */
/* then the carry bit is reset and AX contains returned info. */
/* */
/* Since the set of error codes is being extended as we extend the operating */
/* system, we have provided a means for applications to ask the system for a */
/* recommended course of action when they receive an error. */
/* */
/* The GetExtendedError system call returns a universal error, an error */
/* location and a recommended course of action. The universal error code is */
/* a symptom of the error REGARDLESS of the context in which GetExtendedError */
/* is issued. */
/* */

/* */
/* These are the 2.0 error codes */
/* */
#define NO_ERROR                        0
#define ERROR_INVALID_FUNCTION          1
#define ERROR_FILE_NOT_FOUND            2
#define ERROR_PATH_NOT_FOUND            3
#define ERROR_TOO_MANY_OPEN_FILES       4
#define ERROR_ACCESS_DENIED             5
#define ERROR_INVALID_HANDLE            6
#define ERROR_ARENA_TRASHED             7
#define ERROR_NOT_ENOUGH_MEMORY         8
#define ERROR_INVALID_BLOCK             9
#define ERROR_BAD_ENVIRONMENT           10
#define ERROR_BAD_FORMAT                11
#define ERROR_INVALID_ACCESS            12
#define ERROR_INVALID_DATA              13
/***** reserved                 EQU     14      ; ***** */
#define ERROR_INVALID_DRIVE             15
#define ERROR_CURRENT_DIRECTORY         16
#define ERROR_NOT_SAME_DEVICE           17
#define ERROR_NO_MORE_FILES             18
/* */
/* These are the universal int 24 mappings for the old INT 24 set of errors */
/* */
#define ERROR_WRITE_PROTECT             19
#define ERROR_BAD_UNIT                  20
#define ERROR_NOT_READY                 21
#define ERROR_BAD_COMMAND               22
#define ERROR_CRC                       23
#define ERROR_BAD_LENGTH                24
#define ERROR_SEEK                      25
#define ERROR_NOT_DOS_DISK              26
#define ERROR_SECTOR_NOT_FOUND          27
#define ERROR_OUT_OF_PAPER              28
#define ERROR_WRITE_FAULT               29
#define ERROR_READ_FAULT                30
#define ERROR_GEN_FAILURE               31
/* */
/* These are the new 3.0 error codes reported through INT 24 */
/* */
#define ERROR_SHARING_VIOLATION         32
#define ERROR_LOCK_VIOLATION            33
#define ERROR_WRONG_DISK                34
#define ERROR_FCB_UNAVAILABLE           35
#define ERROR_SHARING_BUFFER_EXCEEDED   36
/* */
/* New OEM network-related errors are 50-79 */
/* */
#define ERROR_NOT_SUPPORTED             50
#define ERROR_REM_NOT_LIST              51      /* Remote computer not listening */
#define ERROR_DUP_NAME                  52      /* Duplicate name on network */
#define ERROR_BAD_NETPATH               53      /* Network path not found */
#define ERROR_NETWORK_BUSY              54      /* Network busy */
#define ERROR_DEV_NOT_EXIST             55      /* Network device no longer exists */
#define ERROR_TOO_MANY_CMDS             56      /* Net BIOS command limit exceeded */
#define ERROR_ADAP_HDW_ERR              57      /* Network adapter hardware error */
#define ERROR_BAD_NET_RESP              58      /* Incorrect response from network */
#define ERROR_UNEXP_NET_ERR             59      /* Unexpected network error */
#define ERROR_BAD_REM_ADAP              60      /* Incompatible remote adapter */
#define ERROR_PRINTQ_FULL               61      /* Print queue full */
#define ERROR_NO_SPOOL_SPACE            62      /* Not enough space for print file */
#define ERROR_PRINT_CANCELLED           63      /* Print file was cancelled */
#define ERROR_NETNAME_DELETED           64      /* Network name was deleted */
#define ERROR_NETWORK_ACCESS_DENIED             65      /* Access denied */
#define ERROR_BAD_DEV_TYPE              66      /* Network device type incorrect */
#define ERROR_BAD_NET_NAME              67      /* Network name not found */
#define ERROR_TOO_MANY_NAMES            68      /* Network name limit exceeded */
#define ERROR_TOO_MANY_SESS             69      /* Net BIOS session limit exceeded */
#define ERROR_SHARING_PAUSED            70      /* Sharing temporarily paused */
#define ERROR_REQ_NOT_ACCEP             71      /* Network request not accepted */
#define ERROR_REDIR_PAUSED              72      /* Print or disk redirection is paused */
/* */
/* End of INT 24 reportable errors */
/* */
#define ERROR_FILE_EXISTS               80
#define ERROR_DUP_FCB                   81        /* ***** */
#define ERROR_CANNOT_MAKE               82
#define ERROR_FAIL_I24                  83
/* */
/* New 3.0 network related error codes */
/* */
#define ERROR_OUT_OF_STRUCTURES         84
#define ERROR_ALREADY_ASSIGNED          85
#define ERROR_INVALID_PASSWORD          86
#define ERROR_INVALID_PARAMETER         87
#define ERROR_NET_WRITE_FAULT           88
/* */
/* New error codes for 4.0 */
/* */
#define ERROR_NO_PROC_SLOTS             89        /* no process slots available */
#define ERROR_NOT_FROZEN                90
#define ERR_TSTOVFL                     91        /* timer service table overflow */
#define ERR_TSTDUP                      92        /* timer service table duplicate */
#define ERROR_NO_ITEMS                  93        /* There were no items to operate upon */
#define ERROR_INTERRUPT                 95        /* interrupted system call */

#define ERROR_TOO_MANY_SEMAPHORES       100
#define ERROR_EXCL_SEM_ALREADY_OWNED    101
#define ERROR_SEM_IS_SET                102
#define ERROR_TOO_MANY_SEM_REQUESTS     103
#define ERROR_INVALID_AT_INTERRUPT_TIME 104

#define ERROR_SEM_OWNER_DIED            105       /* waitsem found owner died */
#define ERROR_SEM_USER_LIMIT            106       /* too many procs have this sem */
#define ERROR_DISK_CHANGE               107       /* insert disk b into drive a */
#define ERROR_DRIVE_LOCKED              108       /* drive locked by another process */
#define ERROR_BROKEN_PIPE               109       /* write on pipe with no reader */
/* */
/* New error codes for 5.0 */
/* */
#define ERROR_OPEN_FAILED               110       /* open/created failed due to */
                                                  /* explicit fail command */
#define ERROR_BUFFER_OVERFLOW           111       /* buffer passed to system call */
                                                  /* is too small to hold return */
                                                  /* data. */
#define ERROR_DISK_FULL                 112       /* not enough space on the disk */
                                                  /* (DOSNEWSIZE/w_NewSize) */
#define ERROR_NO_MORE_SEARCH_HANDLES    113       /* can't allocate another search */
                                                  /* structure and handle. */
                                                  /* (DOSFINDFIRST/w_FindFirst) */
#define ERROR_INVALID_TARGET_HANDLE     114       /* Target handle in DOSDUPHANDLE */
                                                  /* is invalid */
#define ERROR_PROTECTION_VIOLATION      115       /* Bad user virtual address */
#define ERROR_VIOKBD_REQUEST            116
#define ERROR_INVALID_CATEGORY          117       /* Category for DEVIOCTL in not */
                                                  /* defined */
#define ERROR_INVALID_VERIFY_SWITCH     118       /* invalid value passed for */
                                                  /* verify flag */
#define ERROR_BAD_DRIVER_LEVEL          119       /* DosDevIOCTL looks for a level */
                                                  /* four driver.       If the driver */
                                                  /* is not level four we return */
                                                  /* this code */
#define ERROR_CALL_NOT_IMPLEMENTED      120       /* returned from stub api calls. */
                                                  /* This call will disappear when */
                                                  /* all the api's are implemented. */
#define ERROR_SEM_TIMEOUT               121       /* Time out happened from the */
                                                  /* semaphore api functions. */
#define ERROR_INSUFFICIENT_BUFFER       122       /* Some call require the  */
                                          /* application to pass in a buffer */
                                          /* filled with data.  This error is */
                                          /* returned if the data buffer is too */
                                          /* small.  For example: DosSetFileInfo */
                                          /* requires 4 bytes of data.  If a */
                                          /* two byte buffer is passed in then */
                                          /* this error is returned.   */
                                          /* error_buffer_overflow is used when */
                                          /* the output buffer in not big enough. */
#define ERROR_INVALID_NAME              123       /* illegal character or malformed */
                                                  /* file system name */
#define ERROR_INVALID_LEVEL             124       /* unimplemented level for info */
                                                  /* retrieval or setting */
#define ERROR_NO_VOLUME_LABEL           125       /* no volume label found with */
                                                  /* DosQFSInfo command */
/* NOTE:  DosQFSInfo no longer returns the above error; it is still here for */
/*        api\d_qfsinf.asm.                                                  */

#define ERROR_MOD_NOT_FOUND             126       /* w_getprocaddr,w_getmodhandle */
#define ERROR_PROC_NOT_FOUND            127       /* w_getprocaddr */

#define ERROR_WAIT_NO_CHILDREN          128       /* CWait finds to children */

#define ERROR_CHILD_NOT_COMPLETE        129       /* CWait children not dead yet */

/*This is a temporary fix for the 4-19-86 build this should be changed when */
/* we get the file from MS */
#define ERROR_DIRECT_ACCESS_HANDLE      130       /* handle operation is invalid */
                                                  /* for direct disk access */
                                                  /* handles */
#define ERROR_NEGATIVE_SEEK             131       /* application tried to seek  */
                                                  /* with negitive offset */
#define ERROR_SEEK_ON_DEVICE            132       /* application tried to seek */
                                                  /* on device or pipe */
/* */
/* The following are errors generated by the join and subst workers */
/* */
#define ERROR_IS_JOIN_TARGET            133
#define ERROR_IS_JOINED                 134
#define ERROR_IS_SUBSTED                135
#define ERROR_NOT_JOINED                136
#define ERROR_NOT_SUBSTED               137
#define ERROR_JOIN_TO_JOIN              138
#define ERROR_SUBST_TO_SUBST            139
#define ERROR_JOIN_TO_SUBST             140
#define ERROR_SUBST_TO_JOIN             141
#define ERROR_BUSY_DRIVE                142
#define ERROR_SAME_DRIVE                143
#define ERROR_DIR_NOT_ROOT              144
#define ERROR_DIR_NOT_EMPTY             145
#define ERROR_IS_SUBST_PATH             146
#define ERROR_IS_JOIN_PATH              147
#define ERROR_PATH_BUSY                 148
#define ERROR_IS_SUBST_TARGET           149
#define ERROR_SYSTEM_TRACE              150     /* system trace error */
#define ERROR_INVALID_EVENT_COUNT       151     /* DosMuxSemWait errors */
#define ERROR_TOO_MANY_MUXWAITERS       152
#define ERROR_INVALID_LIST_FORMAT       153
#define ERROR_LABEL_TOO_LONG            154
#define ERROR_TOO_MANY_TCBS             155
#define ERROR_SIGNAL_REFUSED            156
#define ERROR_DISCARDED                 157
#define ERROR_NOT_LOCKED                158
#define ERROR_BAD_THREADID_ADDR         159
#define ERROR_BAD_ARGUMENTS             160
#define ERROR_BAD_PATHNAME              161
#define ERROR_SIGNAL_PENDING            162
#define ERROR_UNCERTAIN_MEDIA           163
#define ERROR_MAX_THRDS_REACHED         164
#define ERROR_MONITORS_NOT_SUPPORTED    165
#define ERROR_UNC_DRIVER_NOT_INSTALLED  166

/*      The following error codes refer to errors demand loading segments */

#define ERROR_LOCK_FAILED               167
#define ERROR_SWAPIO_FAILED             168
#define ERROR_SWAPIN_FAILED             169
#define ERROR_BUSY                      170

#define ERROR_INVALID_SEGMENT_NUMBER    180
#define ERROR_INVALID_CALLGATE          181
#define ERROR_INVALID_ORDINAL           182
#define ERROR_ALREADY_EXISTS            183
#define ERROR_NO_CHILD_PROCESS          184
#define ERROR_CHILD_ALIVE_NOWAIT        185
#define ERROR_INVALID_FLAG_NUMBER       186
#define ERROR_SEM_NOT_FOUND             187

/*      following error codes have added  to make the loader error
        messages distinct
*/

#define ERROR_INVALID_STARTING_CODESEG          188
#define ERROR_INVALID_STACKSEG                  189
#define ERROR_INVALID_MODULETYPE                190
#define ERROR_INVALID_EXE_SIGNATURE             191
#define ERROR_EXE_MARKED_INVALID                192
#define ERROR_BAD_EXE_FORMAT                    193
#define ERROR_ITERATED_DATA_EXCEEDS_64k         194
#define ERROR_INVALID_MINALLOCSIZE              195
#define ERROR_DYNLINK_FROM_INVALID_RING         196
#define ERROR_IOPL_NOT_ENABLED                  197
#define ERROR_INVALID_SEGDPL                    198
#define ERROR_AUTODATASEG_EXCEEDS_64k           199
#define ERROR_RING2SEG_MUST_BE_MOVABLE          200
#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM          201
#define ERROR_INFLOOP_IN_RELOC_CHAIN            202

#define ERROR_ENVVAR_NOT_FOUND                  203
#define ERROR_NOT_CURRENT_CTRY                  204
#define ERROR_NO_SIGNAL_SENT                    205
#define ERROR_FILENAME_EXCED_RANGE              206     /* if filename > 8.3 */
#define ERROR_RING2_STACK_IN_USE                207     /* for FAPI */
#define ERROR_META_EXPANSION_TOO_LONG           208     /* if "*a" > 8.3 */
#define ERROR_INVALID_SIGNAL_NUMBER             209
#define ERROR_THREAD_1_INACTIVE                 210
#define ERROR_INFO_NOT_AVAIL                    211 /* PTM 5550 */
#define ERROR_LOCKED                            212
#define ERROR_BAD_DYNALINK                      213 /* PTM 5760 */
#define ERROR_TOO_MANY_MODULES                  214
#define ERROR_NESTING_NOT_ALLOWED               215

#define ERROR_CANNOT_SHRINK                     216 /* attempt made to shrink
                                                        ring 2 stack */
#define ERROR_ZOMBIE_PROCESS                    217
#define ERROR_STACK_IN_HIGH_MEMORY              218
#define ERROR_INVALID_EXITROUTINE_RING          219 /* 1.1 DCR 87 */
#define ERROR_GETBUF_FAILED                     220
#define ERROR_FLUSHBUF_FAILED                   221
#define ERROR_TRANSFER_TOO_LONG                 222
#define ERROR_NO_CHILDREN                       228
#define ERROR_INVALID_SCREEN_GROUP              229

/*
 * Error codes 230 - 249 are reserved for MS Networks
 */
#define ERROR_BAD_PIPE                          230 /* Non-existant pipe or bad operation */
#define ERROR_PIPE_BUSY                         231 /* Pipe is busy */
#define ERROR_NO_DATA                           232 /* No data on non-blocking read */
#define ERROR_PIPE_NOT_CONNECTED                233 /* Pipe was disconnected by server */
#define ERROR_MORE_DATA                         234 /* More data is available */

#define ERROR_VC_DISCONNECTED           240     /* Session was dropped due to errors */

/*  The following added to Dos_Rename */

#define ERROR_CIRCULARITY_REQUESTED             250 /* When renaming a dir  */
                                                    /* which would cause a  */
                                                    /* circularity          */
#define ERROR_DIRECTORY_IN_CDS                  251 /* When renameing a dir */
                                                    /* which is "in use"    */

/* The following error code is 1.2 FileSystem for FSDs */

#define ERROR_INVALID_FSD_NAME                  252 /* when trying to access */
                                                    /* nonexistent FSD       */
#define ERROR_INVALID_PATH                      253 /* bad pseudo device     */

/* Error codes for extended attribute support */

#define ERROR_INVALID_EA_NAME                   254 /* Illegal chars in name */
#define ERROR_EA_LIST_INCONSISTENT              255 /* Size or some field bad */
#define ERROR_EA_LIST_TOO_LONG                  256 /* FEAlist > 64K-1 bytes */

/* Error code for FSH_WILDMATCH */

#define ERROR_NO_META_MATCH                     257 /* string doesn't match expression */

#define ERROR_FINDNOTIFY_TIMEOUT                258 /* FindNotify request
                                                       timeout */
#define ERROR_NO_MORE_ITEMS                     259 /* QFSAttach ordinal query */

#define ERROR_SEARCH_STRUC_REUSED               260 /* 3xbox findfirst/next
                                                       search structure reused */

/* Error code for FSH_FINDCHAR */

#define ERROR_CHAR_NOT_FOUND                    261 /* can't find char */

#define ERROR_TOO_MUCH_STACK                    262 /* Stack request exceeds
                                                       sys limit */

#define ERROR_INVALID_ATTR                      263 /* invalid FS_ATTRIBUTE */

#define ERROR_INVALID_STARTING_RING             264 /* 1.2 DCR 116 */
#define ERROR_INVALID_DLL_INIT_RING             265 /* 1.2 DCR 116 */

#define ERROR_CANNOT_COPY                       266 /* doscopy */
#define ERROR_DIRECTORY                         267 /* doscopy */

#define ERROR_OPLOCKED_FILE                     268 /* oplock */
#define ERROR_OPLOCK_THREAD_EXISTS              269 /* oplock */
#define ERROR_VOLUME_CHANGED                    270 /* MSG%none */
#define ERROR_FINDNOTIFY_HANDLE_IN_USE          271 /* MSG%none */
#define ERROR_FINDNOTIFY_HANDLE_CLOSED          272 /* MSG%none */
#define ERROR_NOTIFY_OBJECT_REMOVED             273 /* MSG%none */
#define ERROR_ALREADY_SHUTDOWN                  274 /* MSG%none */
#define ERROR_EAS_DIDNT_FIT                     275 /* MSG%none */
#define ERROR_EA_FILE_CORRUPT                   276 /* MSG%ERROR_EAS_CORRUPT */
#define ERROR_EA_TABLE_FULL                     277 /* MSG%EA_TABLE_FULL */
#define ERROR_INVALID_EA_HANDLE                 278 /* MSG%INVALID_EA_HANDLE */
#define ERROR_NO_CLUSTER                        279 /* MSG%NO_CLUSTER */
#define ERROR_CREATE_EA_FILE                    280 /* MSG%ERROR_CREATE_EA_FILE */
#define ERROR_CANNOT_OPEN_EA_FILE               281 /* MSG%CANNOT_OPEN_FILE */
#define ERROR_EAS_NOT_SUPPORTED                 282 /* MSG%EAS_NOT_SUPPORTED */
#define ERROR_NEED_EAS_FOUND                    283 /* MSG%NEED_EAS_FOUND */
#define ERROR_DUPLICATE_HANDLE                  284 /* MSG%EAS_DISCARDED */
#define ERROR_DUPLICATE_NAME                    285 /* MSG%none */
#define ERROR_EMPTY_MUXWAIT                     286 /* MSG%none */
#define ERROR_MUTEX_OWNED                       287 /* MSG%none */
#define ERROR_NOT_OWNER                         288 /* MSG%none */
#define ERROR_PARAM_TOO_SMALL                   289 /* MSG%none */
#define ERROR_TOO_MANY_HANDLES                  290 /* MSG%none */
#define ERROR_TOO_MANY_OPENS                    291 /* MSG%none */
#define ERROR_WRONG_TYPE                        292 /* MSG%none */
#define ERROR_UNUSED_CODE                       293 /* MSG%none */
#define ERROR_THREAD_NOT_TERMINATED             294 /* MSG%none */
#define ERROR_INIT_ROUTINE_FAILED               295 /* MSG%none */
#define ERROR_MODULE_IN_USE                     296 /* MSG%none */
#define ERROR_NOT_ENOUGH_WATCHPOINTS            297 /* MSG%none */
#define ERROR_TOO_MANY_POSTS                    298 /* MSG%none */
#define ERROR_ALREADY_POSTED                    299 /* MSG%none */
#define ERROR_ALREADY_RESET                     300 /* MSG%none */
#define ERROR_SEM_BUSY                          301 /* MSG%none */

/*      REMINDER: don't forget to update error.inc,     */
/*                oso001.txt and basemid.inc            */


#define ERROR_USER_DEFINED_BASE         0xFF00

#define ERROR_I24_WRITE_PROTECT         0
#define ERROR_I24_BAD_UNIT              1
#define ERROR_I24_NOT_READY             2
#define ERROR_I24_BAD_COMMAND           3
#define ERROR_I24_CRC                   4
#define ERROR_I24_BAD_LENGTH            5
#define ERROR_I24_SEEK                  6
#define ERROR_I24_NOT_DOS_DISK          7
#define ERROR_I24_SECTOR_NOT_FOUND      8
#define ERROR_I24_OUT_OF_PAPER          9
#define ERROR_I24_WRITE_FAULT           0x0A
#define ERROR_I24_READ_FAULT            0x0B
#define ERROR_I24_GEN_FAILURE           0x0C
#define ERROR_I24_DISK_CHANGE           0x0D
#define ERROR_I24_WRONG_DISK            0x0F
#define ERROR_I24_UNCERTAIN_MEDIA       0x10
#define ERROR_I24_CHAR_CALL_INTERRUPTED 0x11
#define ERROR_I24_NO_MONITOR_SUPPORT    0x12
#define ERROR_I24_INVALID_PARAMETER     0x13

#define ALLOWED_FAIL                    0x0001
#define ALLOWED_ABORT                   0x0002
#define ALLOWED_RETRY                   0x0004
#define ALLOWED_IGNORE                  0x0008
#define ALLOWED_DETACHED                0x8000

#define I24_OPERATION                   0x1
#define I24_AREA                        0x6
                                                          /* 01 if FAT */
                                                          /* 10 if root DIR */
                                                          /* 11 if DATA */
#define I24_CLASS                       0x80


/* Values for error CLASS */

#define ERRCLASS_OUTRES                 1         /* Out of Resource */
#define ERRCLASS_TEMPSIT                2         /* Temporary Situation */
#define ERRCLASS_AUTH                   3         /* Permission problem */
#define ERRCLASS_INTRN                  4         /* Internal System Error */
#define ERRCLASS_HRDFAIL                5         /* Hardware Failure */
#define ERRCLASS_SYSFAIL                6         /* System Failure */
#define ERRCLASS_APPERR                 7         /* Application Error */
#define ERRCLASS_NOTFND                 8         /* Not Found */
#define ERRCLASS_BADFMT                 9         /* Bad Format */
#define ERRCLASS_LOCKED                 10        /* Locked */
#define ERRCLASS_MEDIA                  11        /* Media Failure */
#define ERRCLASS_ALREADY                12        /* Collision with Existing Item */
#define ERRCLASS_UNK                    13        /* Unknown/other */
#define ERRCLASS_CANT                   14
#define ERRCLASS_TIME                   15

/* Values for error ACTION */

#define ERRACT_RETRY                    1         /* Retry */
#define ERRACT_DLYRET                   2         /* Delay Retry, retry after pause */
#define ERRACT_USER                     3         /* Ask user to regive info */
#define ERRACT_ABORT                    4         /* abort with clean up */
#define ERRACT_PANIC                    5         /* abort immediately */
#define ERRACT_IGNORE                   6         /* ignore */
#define ERRACT_INTRET                   7         /* Retry after User Intervention */

/* Values for error LOCUS */

#define ERRLOC_UNK                      1         /* No appropriate value */
#define ERRLOC_DISK                     2         /* Random Access Mass Storage */
#define ERRLOC_NET                      3         /* Network */
#define ERRLOC_SERDEV                   4         /* Serial Device */
#define ERRLOC_MEM                      5         /* Memory */

/* Abnormal termination codes */

#define TC_NORMAL               0
#define TC_HARDERR              1
#define TC_GP_TRAP              2
#define TC_SIGNAL               3