Updated PCI IDs to latest snapshot.
[tangerine.git] / compiler / include / dos / dosextens.h
blobba75724d59c9954a076ab4c79d6ea9394aaac759
1 #ifndef DOS_DOSEXTENS_H
2 #define DOS_DOSEXTENS_H
4 /*
5 Copyright © 1995-2007, The AROS Development Team. All rights reserved.
6 $Id$
8 Desc: LibBase and some important structures
9 Lang: English
12 #ifndef AROS_CONFIG_H
13 # include <aros/config.h>
14 #endif
15 #ifndef EXEC_TYPES_H
16 # include <exec/types.h>
17 #endif
18 #ifndef EXEC_TASKS_H
19 # include <exec/tasks.h>
20 #endif
21 #ifndef EXEC_PORTS_H
22 # include <exec/ports.h>
23 #endif
24 #ifndef EXEC_LIBRARIES_H
25 # include <exec/libraries.h>
26 #endif
27 #ifndef EXEC_DEVICES_H
28 # include <exec/devices.h>
29 #endif
30 #ifndef EXEC_SEMAPHORES
31 # include <exec/semaphores.h>
32 #endif
33 #ifndef DEVICES_TIMER_H
34 # include <devices/timer.h>
35 #endif
36 #ifndef EXEC_INTERRUPTS_H
37 # include <exec/interrupts.h>
38 #endif
39 #ifndef DOS_DOS_H
40 # include <dos/dos.h>
41 #endif
42 #include <dos/dosextaros.h>
44 /**********************************************************************
45 ***************************** DosLibrary *****************************
46 **********************************************************************/
48 /* This is how the base of dos.library looks like. */
49 struct DosLibrary
51 /* A normal library-base as defined in <exec/libraries.h>. */
52 struct Library dl_lib;
54 struct RootNode * dl_Root;
56 #if (AROS_FLAVOUR & AROS_FLAVOUR_BINCOMPAT)
57 /* The following fields are not used by AROS and are just there to
58 guarantee binary compatibility. DO NOT USE THESE FIELDS IN ANY WAY.
59 Original names were: dl_GV, dl_A2, dl_A5 and dl_A6 */
60 APTR NoAROS2;
61 LONG NoAROS3[3];
62 #endif
64 /* The following fields are PRIVATE! */
65 struct ErrorString * dl_Errors;
66 struct Device * dl_TimerBase;
67 struct Library * dl_UtilityBase;
68 struct Library * dl_IntuitionBase;
70 /* These are AROS specific extensions. They are all PRIVATE! */
71 struct timerequest dl_TimerIO;
73 struct DosList * dl_DevInfo;
74 struct ExecBase * dl_SysBase;
75 BPTR dl_SegList;
76 struct Device * dl_NulHandler;
77 struct Unit * dl_NulLock;
79 struct SignalSemaphore dl_LDObjectsListSigSem;
80 struct List dl_LDObjectsList;
81 struct Interrupt dl_LDHandler;
82 struct MsgPort * dl_LDDemonPort;
83 struct Process * dl_LDDemonTask;
84 ULONG dl_LDReturn;
85 BPTR dl_SYSLock;
87 #if 0
88 ULONG dl_ProcCnt;
89 #endif
90 /* The flags are the same, as they were in RootNode->rn_Flags. See below
91 for definitions. */
92 ULONG dl_Flags;
94 /* Resident segment list **PRIVATE** */
95 BPTR dl_ResList;
98 /* dl_Flags/rn_Flags */
99 #define RNB_WILDSTAR 24 /* Activate '*' as wildcard character. */
100 #define RNF_WILDSTAR (1L << RNB_WILDSTAR)
103 struct RootNode
105 /* (IPTR *) Pointer to an array containing pointers to CLI processes.
106 The CLI process number is equal to the index of that array. The
107 first field (index 0) contains the maximal number of CLI processes.
108 See also rn_CliList. */
109 BPTR rn_TaskArray;
110 /* (void *) Pointer to the SegList for CLIs. */
111 BPTR rn_ConsoleSegment;
112 /* The current time. */
113 struct DateStamp rn_Time;
114 /* (APTR) The SegList of the process that handles validation of devices.
116 LONG rn_RestartSeg;
117 /* (struct DosInfo *) see below for DosInfo */
118 BPTR rn_Info;
119 BPTR rn_FileHandlerSegment;
120 /* List of all CLI processes (struct CliProcList - see below). See also
121 rn_TaskArray. */
122 struct MinList rn_CliList;
123 /* Message port of boot filesystem. (PRIVATE) */
124 struct MsgPort * rn_BootProc;
125 /* (void *) Pointer to the SegList for shells. */
126 BPTR rn_ShellSegment;
127 /* Additional flags (see above). */
128 LONG rn_Flags;
130 /* RootNode arbitrator */
131 struct SignalSemaphore rn_RootLock;
135 /* Structure that is linked into the rootnode's rn_CliList. Completely
136 private, of course! ... and it's not compatible to AmigaOS. */
137 struct CLIInfo
139 struct Node ci_Node;
140 struct Process *ci_Process;
143 struct DosInfo
145 BPTR di_McName; /* PRIVATE */
146 BPTR di_DevInfo;
147 BPTR di_Devices;
148 BPTR di_Handlers;
149 APTR di_NetHand;
151 /* The following semaphores are PRIVATE. */
152 struct SignalSemaphore di_DevLock;
153 struct SignalSemaphore di_EntryLock;
154 struct SignalSemaphore di_DeleteLock;
156 #define di_ResList di_McName
158 /**********************************************************************
159 ***************************** Processes ******************************
160 **********************************************************************/
162 /* Standard process structure. Processes are just extended tasks. */
163 struct Process
165 /* Embedded task structure as defined in <exec/tasks.h>. */
166 struct Task pr_Task;
168 /* Processes standard message-port. Used for various puposes. */
169 struct MsgPort pr_MsgPort;
170 WORD pr_Pad; /* PRIVATE */
171 /* SegList array, used by this process. (void **) */
172 BPTR pr_SegList;
173 /* StackSize of the current process. */
174 LONG pr_StackSize;
175 APTR pr_GlobVec;
176 /* CLI process number. This may be 0, in which case the process is not
177 connected to a CLI. */
178 LONG pr_TaskNum;
179 /* Pointer to upper end of stack. (void *) */
180 BPTR pr_StackBase;
181 /* Secondary return-value, as defined in <dos/dos.h>. As of now this
182 field is declared PRIVATE. Use IoErr()/SetIoErr() to access it. */
183 LONG pr_Result2;
184 /* Lock of the current directory. As of now this is declared READ-ONLY.
185 Use CurrentDir() to set it. (struct FileLock *) */
186 BPTR pr_CurrentDir;
187 /* Standard input file. As of now this is declared WRITE-ONLY. Use
188 Input() to query it. */
189 BPTR pr_CIS;
190 /* Standard output file. As of now this is declared WRITE-ONLY. Use
191 Output() to query it. */
192 BPTR pr_COS;
193 /* Task to handle the console associated with process. */
194 APTR pr_ConsoleTask;
195 /* The task that is responsible for handling the filesystem. */
196 APTR pr_FileSystemTask;
197 /* CLI the process is connected to. (struct CommandLineInterface *) */
198 BPTR pr_CLI;
199 APTR pr_ReturnAddr;
200 /* Function to be called, when process waits for a packet-message. */
201 APTR pr_PktWait;
202 /* Standard-Window of process. */
203 APTR pr_WindowPtr;
204 /* Lock to home-directory of process. (struct FileLock *) */
205 BPTR pr_HomeDir;
206 LONG pr_Flags; /* see below */
208 /* Code that is called, when the process exits. pr_ExitData takes an
209 argument to be passed to this code. */
210 void (* pr_ExitCode)();
211 IPTR pr_ExitData;
212 /* Arguments passed to the process from caller. */
213 STRPTR pr_Arguments;
215 /* List of local environment variables. This list should be in
216 alphabetical order. Multiple entries may have the same name, if they
217 are of different types. See <dos/var.h> for more information. */
218 struct MinList pr_LocalVars;
219 ULONG pr_ShellPrivate;
220 /* Standard error file. May be NULL, in which case pr_COS is to be used.
221 Use this instead of Output() to report errors. */
222 BPTR pr_CES;
225 /* pr_Flags (all PRIVATE) They mainly descibe what happens if the process
226 exits, i.e. which resources the process should clean itself. The flags
227 are self-explaining. */
228 #define PRB_FREESEGLIST 0
229 #define PRB_FREECURRDIR 1
230 #define PRB_FREECLI 2
231 #define PRB_CLOSEINPUT 3
232 #define PRB_CLOSEOUTPUT 4
233 #define PRB_FREEARGS 5
234 #define PRB_CLOSEERROR 6
235 #define PRB_SYNCHRONOUS 7
236 #define PRB_WAITINGFORCHILD 8 /* This one is subject to change! */
237 #define PRB_NOTIFYONDEATH 9
239 #define PRF_FREESEGLIST (1L << PRB_FREESEGLIST)
240 #define PRF_FREECURRDIR (1L << PRB_FREECURRDIR)
241 #define PRF_FREECLI (1L << PRB_FREECLI)
242 #define PRF_CLOSEINPUT (1L << PRB_CLOSEINPUT)
243 #define PRF_CLOSEOUTPUT (1L << PRB_CLOSEOUTPUT)
244 #define PRF_FREEARGS (1L << PRB_FREEARGS)
245 #define PRF_CLOSEERROR (1L << PRB_CLOSEERROR)
246 #define PRF_SYNCHRONOUS (1L << PRB_SYNCHRONOUS)
247 #define PRF_WAITINGFORCHILD (1L << PRB_WAITINGFORCHILD)
248 #define PRF_NOTIFYONDEATH (1L << PRB_NOTIFYONDEATH)
250 /* Structure used for CLIs and Shells. Allocate this structure with
251 AllocDosObject() only! */
252 struct CommandLineInterface
254 /* Secondary error code, set by last command. */
255 LONG cli_Result2;
256 /* Name of the current directory. */
257 BSTR cli_SetName;
258 /* Lock of the first directory in path. (struct FileLock *) */
259 BPTR cli_CommandDir;
260 /* Error code, the last command returned. See <dos/dos.h> for
261 definitions. */
262 LONG cli_ReturnCode;
263 /* Name of the command that is currently executed. */
264 BSTR cli_CommandName;
265 /* Fail-Level as set by the command "FailAt". */
266 LONG cli_FailLevel;
267 /* Current prompt in the CLI window. */
268 BSTR cli_Prompt;
269 /* Standard/Default input file. (struct FileLock *) */
270 BPTR cli_StandardInput;
271 /* Current input file. (struct FileLock *) */
272 BPTR cli_CurrentInput;
273 /* Name of the file that is currently executed. */
274 BSTR cli_CommandFile;
275 /* TRUE if the currently CLI is connected to a controlling terminal,
276 otherwise FALSE. */
277 LONG cli_Interactive;
278 /* FALSE if there is no controlling terminal, otherwise TRUE. */
279 LONG cli_Background;
280 /* Current output file. (struct FileLock *) */
281 BPTR cli_CurrentOutput;
282 /* Default stack size as set by the command "Stack". */
283 LONG cli_DefaultStack;
284 /* Standard/Default output file. (struct FileLock *) */
285 BPTR cli_StandardOutput;
286 /* SegList of currently loaded command. */
287 BPTR cli_Module;
289 /* Here begins the aros specific part */
290 /* Standard/Default Error file. (struct FileLock *) */
291 BPTR cli_StandardError;
294 /* CLI_DEFAULTSTACK_UNIT * cli_DefaultStack = stack in bytes */
296 #define CLI_DEFAULTSTACK_UNIT sizeof(IPTR)
298 /* Devices process structure as returned by GetDeviceProc(). */
299 struct DevProc
301 struct MsgPort * dvp_Port;
302 BPTR dvp_Lock; /* struct FileLock * */
303 ULONG dvp_Flags; /* see below */
304 struct DosList * dvp_DevNode; /* PRIVATE */
307 /* dvp_Flags */
308 #define DVPB_UNLOCK 0
309 #define DVPB_ASSIGN 1
310 #define DVPF_UNLOCK (1L<<DVPB_UNLOCK)
311 #define DVPF_ASSIGN (1L<<DVPB_ASSIGN)
313 /**********************************************************************
314 ******************************* Files ********************************
315 **********************************************************************/
317 /* Standard file-handle as returned by Open() (as BPTR). Generally said, you
318 should not use this structure in any way and only use library-calls to
319 access files. Note that this structure is very different to the structure
320 used in AmigaOS! Treat this structure as PRIVATE. If you want to create
321 this structure nevertheless, use AllocDosObject(). */
322 struct FileHandle
324 /* The next three are used with packet-based filesystems */
325 struct Message * fh_Link; /* exec message containing packet */
326 struct MsgPort * fh_Port; /* packet reply port */
327 struct MsgPort * fh_Type; /* port to send packets to */
329 UBYTE * fh_Buf;
330 UBYTE * fh_Pos;
331 UBYTE * fh_End;
333 /* The following four fields have different names and a different
334 function than their AmigaOS equivalents. The original names were:
335 fh_Funcs/fh_Func1, fh_Func2, fh_Func3, fh_Args/fh_Arg1 and fh_Arg2 */
336 ULONG fh_Size;
337 ULONG fh_Flags; /* see below */
338 /* This is a pointer to a filesystem handler. See <dos/filesystems.h> for
339 more information. */
340 struct Device * fh_Device;
342 /* SDuvan: Added this and removed the #if below. This field allows us
343 to emulate packets -- specifically it makes it possible
344 to implement the ***Pkt() functions */
345 SIPTR fh_CompatibilityHack;
347 /* A private pointer to a device specific filehandle structure. See
348 <dos/filesystems.h> for more information. */
349 struct Unit * fh_Unit;
352 #define fh_Arg1 fh_CompatibilityHack
354 /* fh_Flags. The flags are AROS specific and therefore PRIVATE.. */
355 #define FHF_WRITE 0x80000000
356 #define FHF_BUF 1
357 #define FHF_APPEND 2
358 #define FHF_LINEBUF 4
359 #define FHF_NOBUF 8
361 /* Structure of a lock. This is provided as it may be required internally by
362 * packet-based filesystems, but it is not used by dos.library and the rest of
363 * AROS. Lock() returns a struct FileHandle! */
364 struct FileLock
366 BPTR fl_Link; /* (struct FileLock *) Pointer to next lock. */
367 LONG fl_Key;
368 LONG fl_Access;
369 struct MsgPort * fl_Task;
370 BPTR fl_Volume; /* (struct DeviceList * - see below) */
373 /* This is a definition telling that AROS uses fake FileLocks which are
374 FileHandles in fact. It will go away when real FileLocks are implemented. */
375 #define AROS_FAKE_LOCK
377 /* Constants, defining of what kind a file is. These constants are used in
378 many structures, including FileInfoBlock (<dos/dos.h>) and ExAllData
379 (<dos/exall.h>). */
380 #define ST_PIPEFILE -5 /* File is a pipe */
381 #define ST_LINKFILE -4 /* Hard link to a file */
382 #define ST_FILE -3 /* Plain file */
383 #define ST_ROOT 1 /* Root directory of filesystem */
384 #define ST_USERDIR 2 /* Normal directory */
385 #define ST_SOFTLINK 3 /* Soft link (may be a file or directory) */
386 #define ST_LINKDIR 4 /* Hard link to a directory */
388 /**********************************************************************
389 ****************************** DosLists ******************************
390 **********************************************************************/
392 /* This structure is returned by LockDosList() and similar calls. This
393 structure is different to the AmigaOS one. But this structure is PRIVATE
394 anyway. Use system-calls for dos list-handling. */
395 struct DosList
397 /* PRIVATE pointer to next entry. In AmigaOS this used to be a BPTR. */
398 struct DosList * dol_Next;
399 /* Type of the current node (see below). */
400 LONG dol_Type;
401 /* Filesystem task handling this entry (for old-style filesystems) */
402 struct MsgPort * dol_Task;
403 /* The lock passed to AssignLock(). Only set if the type is
404 DLT_DIRECTORY. */
405 BPTR dol_Lock;
407 /* This union combines all the different types. */
408 union {
409 /* See struct DevInfo below. */
410 struct {
411 BSTR dol_Handler;
412 LONG dol_StackSize;
413 LONG dol_Priority;
414 BPTR dol_Startup;
415 BPTR dol_NoAROS3[2];
416 } dol_handler;
417 /* See struct DeviceList below. */
418 struct {
419 struct DateStamp dol_VolumeDate;
420 BPTR dol_LockList;
421 LONG dol_DiskType;
422 BPTR dol_unused;
423 } dol_volume;
424 /* Structure used for assigns. */
425 struct {
426 /* The name for the late or nonbinding assign. */
427 UBYTE *dol_AssignName;
428 /* A list of locks, used by AssignAdd(). */
429 struct AssignList *dol_List;
430 } dol_assign;
431 } dol_misc;
433 /* Name as a BCPL string */
434 BSTR dol_Name;
436 /* Private extensions for the DosList struct.
437 * Should not be used in user land code.
439 union
441 IPTR dol_Reserved[5];
442 struct DosListAROSExt dol_AROS;
443 } dol_Ext;
446 /* dol_Type/dl_Type/dvi_Type. Given to MakeDosEntry(). */
447 #define DLT_DEVICE 0 /* A real filesystem (or similar) */
448 #define DLT_DIRECTORY 1 /* Just a simple assign */
449 #define DLT_VOLUME 2 /* Volume node (for removable media) */
450 #define DLT_LATE 3 /* Late binding assign (not yet) */
451 #define DLT_NONBINDING 4 /* Nonbinding assign (not yet) */
454 /* The following structures are essentially the same as DosList above. The
455 difference is that they support just one type of entry. You can use them
456 instead of DosList if you have a list containing just one type of
457 entry. For more information see above. */
459 struct DeviceList
461 struct DeviceList * dl_Next;
462 LONG dl_Type; /* see above, always = DLT_VOLUME */
464 struct MsgPort * dl_Task;
465 BPTR dl_Lock;
467 /* Embedded DateStamp structured as defined in <dos/dos.h>. At this
468 date the volume was created. */
469 struct DateStamp dl_VolumeDate;
470 /* (void *) List of all locks on the volume. */
471 BPTR dl_LockList;
472 /* Type of the disk. (see <dos/dos.h> for definitions) */
473 LONG dl_DiskType;
474 BPTR dl_unused; /* PRIVATE */
476 /* In DevInfo we have three pointers and three longwords,
477 * in this structure two pointers and four longwords,
478 * add some bytes if pointers are longer then longwords
479 * FIXME: ptr alignment not taken into account
481 #if AROS_SIZEOFPTR > AROS_SIZEOFULONG
482 // UBYTE dl_unused2[(AROS_SIZEOFPTR-AROS_SIZEOFULONG)];
483 #endif
485 BSTR dl_Name;
487 /* Private extensions
488 * Should not be used in user land code.
490 union
492 IPTR dl_Reserved[5];
493 struct DosListAROSExt dl_AROS;
494 } dl_Ext;
498 /* Structure that describes a device. This is essentially the same structure
499 as DeviceNode, defined in <dos/filehandler.h>. */
500 struct DevInfo
502 struct DevInfo * dvi_Next;
503 LONG dvi_Type; /* see above, always = DLT_DEVICE */
505 struct MsgPort * dvi_Task;
506 BPTR dvi_Lock;
508 BSTR dvi_Handler; /* Device name for handler. */
509 LONG dvi_StackSize; /* Packet-handler initial stack size */
510 LONG dvi_Priority; /* Packet-handler initial priority */
511 BPTR dvi_Startup; /* (struct FileSysStartupMsg * - defined in
512 <dos/filehandler.h>) */
513 BPTR dvi_NoAROS4[2]; /* PRIVATE */
515 BSTR dvi_Name;
517 /* Private extensions
518 * Should not be used in user land code.
520 union
522 IPTR dvi_Reserved[5];
523 struct DosListAROSExt dvi_AROS;
524 } dvi_Ext;
527 /* Dos list scanning and locking modes as used in LockDosList() */
528 /* Specify either LDF_READ, if you want a non-exclusive lock, or LDF_WRITE,
529 if you want an exclusive lock (i.e. if you want to modify the list).
531 #define LDB_READ 0 /* Non-exclusive/read lock */
532 #define LDB_WRITE 1 /* Exclusive/write lock */
533 /* Specify which list(s) to lock. */
534 #define LDB_DEVICES 2 /* Device list */
535 #define LDB_VOLUMES 3 /* Volume list */
536 #define LDB_ASSIGNS 4 /* Assign list */
537 #define LDB_ENTRY 5
538 #define LDB_DELETE 6
540 #define LDF_READ (1L<<LDB_READ)
541 #define LDF_WRITE (1L<<LDB_WRITE)
542 #define LDF_DEVICES (1L<<LDB_DEVICES)
543 #define LDF_VOLUMES (1L<<LDB_VOLUMES)
544 #define LDF_ASSIGNS (1L<<LDB_ASSIGNS)
545 #define LDF_ENTRY (1L<<LDB_ENTRY)
546 #define LDF_DELETE (1L<<LDB_DELETE)
547 #define LDF_ALL (LDF_DEVICES | LDF_VOLUMES | LDF_ASSIGNS)
550 /* Used for assigns that point to multiple directories. */
551 struct AssignList
553 struct AssignList * al_Next; /* Pointer to next assign node. */
554 BPTR al_Lock; /* (struct FileLock *) Lock of on of the
555 directories. */
558 /**********************************************************************
559 ********************** Low Level File Handling ***********************
560 **********************************************************************/
562 /* This section is OBSOLETE and is not implemented in AROS! AROS uses a
563 different concept for filesystem-handling. See <dos/filesystem.h> for
564 more information. Use the structures and defines in this section only, if
565 you are programming just for AmigaOS. */
568 /* Allocate this structure with AllocDosObject(). */
569 struct DosPacket
571 struct Message * dp_Link; /* Pointer to a standard exec message. */
572 struct MsgPort * dp_Port; /* Reply-Port of that packet. */
574 LONG dp_Type; /* see below */
575 LONG dp_Res1; /* Normal return value. */
576 LONG dp_Res2; /* Secondary return value (as returned by IoErr()). See
577 <dos/dos.h> for possible values. */
579 /* The actual data. */
580 SIPTR dp_Arg1;
581 SIPTR dp_Arg2;
582 SIPTR dp_Arg3;
583 SIPTR dp_Arg4;
584 SIPTR dp_Arg5;
585 SIPTR dp_Arg6;
586 SIPTR dp_Arg7;
588 #define dp_Action dp_Type
589 #define dp_Status dp_Res1
590 #define dp_Status2 dp_Res2
591 #define dp_BufAddr dp_Arg1
594 /* These are defined for packet emulation purposes only! AROS doesn't use
595 packets at all, but emulates (some of) them via DoPkt(), SendPkt() and
596 others to function like they did in AmigaOS */
598 /* dp_Type */
599 #define ACTION_NIL 0
600 #define ACTION_STARTUP 0
601 #define ACTION_GET_BLOCK 2 /* Obsolete */
602 #define ACTION_SET_MAP 4
603 #define ACTION_DIE 5
604 #define ACTION_EVENT 6
605 #define ACTION_CURRENT_VOLUME 7
606 #define ACTION_LOCATE_OBJECT 8
607 #define ACTION_RENAME_DISK 9
608 #define ACTION_FREE_LOCK 15
609 #define ACTION_DELETE_OBJECT 16
610 #define ACTION_RENAME_OBJECT 17
611 #define ACTION_MORE_CACHE 18
612 #define ACTION_COPY_DIR 19
613 #define ACTION_WAIT_CHAR 20
614 #define ACTION_SET_PROTECT 21
615 #define ACTION_CREATE_DIR 22
616 #define ACTION_EXAMINE_OBJECT 23
617 #define ACTION_EXAMINE_NEXT 24
618 #define ACTION_DISK_INFO 25
619 #define ACTION_INFO 26
620 #define ACTION_FLUSH 27
621 #define ACTION_SET_COMMENT 28
622 #define ACTION_PARENT 29
623 #define ACTION_TIMER 30
624 #define ACTION_INHIBIT 31
625 #define ACTION_DISK_TYPE 32
626 #define ACTION_DISK_CHANGE 33
627 #define ACTION_SET_DATE 34
628 #define ACTION_SAME_LOCK 40
630 #define ACTION_WRITE 'W'
631 #define ACTION_READ 'R'
633 #define ACTION_SCREEN_MODE 994
634 #define ACTION_CHANGE_SIGNAL 995
635 #define ACTION_READ_RETURN 1001
636 #define ACTION_WRITE_RETURN 1002
637 #define ACTION_FINDUPDATE 1004
638 #define ACTION_FINDINPUT 1005
639 #define ACTION_FINDOUTPUT 1006
640 #define ACTION_END 1007
641 #define ACTION_SEEK 1008
642 #define ACTION_FORMAT 1020
643 #define ACTION_MAKE_LINK 1021
644 #define ACTION_SET_FILE_SIZE 1022
645 #define ACTION_WRITE_PROTECT 1023
646 #define ACTION_READ_LINK 1024
647 #define ACTION_FH_FROM_LOCK 1026
648 #define ACTION_IS_FILESYSTEM 1027
649 #define ACTION_CHANGE_MODE 1028
650 #define ACTION_COPY_DIR_FH 1030
651 #define ACTION_PARENT_FH 1031
652 #define ACTION_EXAMINE_ALL 1033
653 #define ACTION_EXAMINE_FH 1034
654 #define ACTION_EXAMINE_ALL_END 1035
655 #define ACTION_SET_OWNER 1036
657 #define ACTION_LOCK_RECORD 2008
658 #define ACTION_FREE_RECORD 2009
660 #define ACTION_ADD_NOTIFY 4097
661 #define ACTION_REMOVE_NOTIFY 4098
663 #define ACTION_SERIALIZE_DISK 4200
665 /* Structure for easy handling of DosPackets. DosPackets don't have to be in
666 this structure, but this struture may ease the use of it. */
667 struct StandardPacket
669 struct Message sp_Msg;
670 struct DosPacket sp_Pkt;
674 /* NOTE: AROS doesn't use startup packets. This will ONLY make a difference
675 for shell writers... */
677 /* Types of command execution */
678 #define RUN_EXECUTE -1
679 #define RUN_SYSTEM -2
680 #define RUN_SYSTEM_ASYNCH -3
683 /**********************************************************************
684 ****************************** Segments ******************************
685 **********************************************************************/
687 /* Resident list structure as returned by AddSegment(). */
688 struct Segment
690 BPTR seg_Next; /* Pointer to next segment. */
691 LONG seg_UC; /* Usage count/type */
692 BPTR seg_Seg; /* Actual Segment */
693 UBYTE seg_Name[4]; /* The first characters of the name (BSTR). */
696 #define CMD_SYSTEM -1
697 #define CMD_INTERNAL -2
698 #define CMD_DISABLED -999
700 /**********************************************************************
701 *************************** Error Handling ***************************
702 **********************************************************************/
704 struct ErrorString
706 LONG * estr_Nums;
707 STRPTR estr_Strings;
710 /* Return values for ErrorReport(). */
711 #define REPORT_STREAM 0
712 #define REPORT_TASK 1
713 #define REPORT_LOCK 2
714 #define REPORT_VOLUME 3
715 #define REPORT_INSERT 4
717 #define ABORT_BUSY 288
718 #define ABORT_DISK_ERROR 296
720 #endif /* DOS_DOSEXTENS_H */