home *** CD-ROM | disk | FTP | other *** search
- IFND DOS_DOSEXTENS_I
- DOS_DOSEXTENS_I SET 1
- **
- ** $Filename: dos/dosextens.i $
- ** $Release: 2.04 Includes, V37.4 $
- ** $Revision: 36.37 $
- ** $Date: 91/11/08 $
- **
- ** DOS structures not needed for the casual AmigaDOS user
- **
- ** (C) Copyright 1985-1991 Commodore-Amiga, Inc.
- ** All Rights Reserved
- **
-
- IFND EXEC_TYPES_I
- INCLUDE "exec/types.i"
- ENDC
- IFND EXEC_TASKS_I
- INCLUDE "exec/tasks.i"
- ENDC
- IFND EXEC_PORTS_I
- INCLUDE "exec/ports.i"
- ENDC
- IFND EXEC_LIBRARIES_I
- INCLUDE "exec/libraries.i"
- ENDC
- IFND EXEC_SEMAPHORES_I
- INCLUDE "exec/semaphores.i"
- ENDC
- IFND DEVICES_TIMER_I
- INCLUDE "devices/timer.i"
- ENDC
-
- IFND DOS_DOS_I
- INCLUDE "dos/dos.i"
- ENDC
-
-
- * All DOS processes have this STRUCTure
- * Create and DeviceProc returns pointer to the MsgPort in this STRUCTure
- * Process_addr = DeviceProc(..) - TC_SIZE
-
- STRUCTURE Process,0
- STRUCT pr_Task,TC_SIZE
- STRUCT pr_MsgPort,MP_SIZE * This is BPTR address from DOS functions
- WORD pr_Pad * Remaining variables on 4 byte boundaries
- BPTR pr_SegList * Array of seg lists used by this process
- LONG pr_StackSize * Size of process stack in bytes
- APTR pr_GlobVec * Global vector for this process (BCPL)
- LONG pr_TaskNum * CLI task number of zero if not a CLI
- BPTR pr_StackBase * Ptr to high memory end of process stack
- LONG pr_Result2 * Value of secondary result from last call
- BPTR pr_CurrentDir * Lock associated with current directory
- BPTR pr_CIS * Current CLI Input Stream
- BPTR pr_COS * Current CLI Output Stream
- APTR pr_ConsoleTask * Console handler process for current window
- APTR pr_FileSystemTask * File handler process for current drive
- BPTR pr_CLI * pointer to CommandLineInterface
- APTR pr_ReturnAddr * pointer to previous stack frame
- APTR pr_PktWait * Function to be called when awaiting msg
- APTR pr_WindowPtr * Window pointer for errors
-
- * following definitions are new with 2.0
- BPTR pr_HomeDir * Home directory of executing program
- LONG pr_Flags * flags telling dos about process
- APTR pr_ExitCode * code to call on exit of program or NULL
- LONG pr_ExitData * Passed as an argument to pr_ExitCode
- APTR pr_Arguments * Arguments passed to the process at start
- STRUCT pr_LocalVars,MLH_SIZE * Local environment variables
- APTR pr_ShellPrivate * for the use of the current shell
- BPTR pr_CES * Error stream - if NULL, use pr_COS
- LABEL pr_SIZEOF * Process
-
- *
- * Flags for pr_Flags
- *
- BITDEF PR,FREESEGLIST,0
- BITDEF PR,FREECURRDIR,1
- BITDEF PR,FREECLI,2
- BITDEF PR,CLOSEINPUT,3
- BITDEF PR,CLOSEOUTPUT,4
- BITDEF PR,FREEARGS,5
-
- * The long word address (BPTR) of this STRUCTure is returned by
- * Open() and other routines that return a file. You need only worry
- * about this STRUCT to do async io's via PutMsg() instead of
- * standard file system calls
-
- STRUCTURE FileHandle,0
- APTR fh_Link * pointer to EXEC message
- APTR fh_Interactive * Boolean; TRUE if interactive handle
- APTR fh_Type * Port to do PutMsg() to
- LONG fh_Buf
- LONG fh_Pos
- LONG fh_End
- LONG fh_Funcs
- fh_Func1 EQU fh_Funcs
- LONG fh_Func2
- LONG fh_Func3
- LONG fh_Args
- fh_Arg1 EQU fh_Args
- LONG fh_Arg2
- LABEL fh_SIZEOF * FileHandle
-
- * This is the extension to EXEC Messages used by DOS
- STRUCTURE DosPacket,0
- APTR dp_Link * pointer to EXEC message
- APTR dp_Port * pointer to Reply port for the packet
- * * Must be filled in each send.
- LONG dp_Type * See ACTION_... below and
- * * 'R' means Read, 'W' means Write to the file system
- LONG dp_Res1 * For file system calls this is the result
- * * that would have been returned by the
- * * function, e.g. Write ('W') returns actual
- * * length written
- LONG dp_Res2 * For file system calls this is what would
- * * have been returned by IoErr()
- LONG dp_Arg1
- * Device packets common equivalents
- dp_Action EQU dp_Type
- dp_Status EQU dp_Res1
- dp_Status2 EQU dp_Res2
- dp_BufAddr EQU dp_Arg1
- LONG dp_Arg2
- LONG dp_Arg3
- LONG dp_Arg4
- LONG dp_Arg5
- LONG dp_Arg6
- LONG dp_Arg7
- LABEL dp_SIZEOF * DosPacket
-
- * A Packet does not require the Message to before it in memory, but
- * for convenience it is useful to associate the two.
- * Also see the function init_std_pkt for initializing this STRUCTure
-
- STRUCTURE StandardPacket,0
- STRUCT sp_Msg,MN_SIZE
- STRUCT sp_Pkt,dp_SIZEOF
- LABEL sp_SIZEOF * StandardPacket
-
-
- * Packet types
- ACTION_NIL EQU 0
- ACTION_STARTUP EQU 0
- ACTION_GET_BLOCK EQU 2 ;OBSOLETE
- ACTION_SET_MAP EQU 4
- ACTION_DIE EQU 5
- ACTION_EVENT EQU 6
- ACTION_CURRENT_VOLUME EQU 7
- ACTION_LOCATE_OBJECT EQU 8
- ACTION_RENAME_DISK EQU 9
- ACTION_WRITE EQU 'W'
- ACTION_READ EQU 'R'
- ACTION_FREE_LOCK EQU 15
- ACTION_DELETE_OBJECT EQU 16
- ACTION_RENAME_OBJECT EQU 17
- ACTION_MORE_CACHE EQU 18
- ACTION_COPY_DIR EQU 19
- ACTION_WAIT_CHAR EQU 20
- ACTION_SET_PROTECT EQU 21
- ACTION_CREATE_DIR EQU 22
- ACTION_EXAMINE_OBJECT EQU 23
- ACTION_EXAMINE_NEXT EQU 24
- ACTION_DISK_INFO EQU 25
- ACTION_INFO EQU 26
- ACTION_FLUSH EQU 27
- ACTION_SET_COMMENT EQU 28
- ACTION_PARENT EQU 29
- ACTION_TIMER EQU 30
- ACTION_INHIBIT EQU 31
- ACTION_DISK_TYPE EQU 32
- ACTION_DISK_CHANGE EQU 33
- ACTION_SET_DATE EQU 34
-
- ACTION_SCREEN_MODE EQU 994
-
- ACTION_READ_RETURN EQU 1001
- ACTION_WRITE_RETURN EQU 1002
- ACTION_SEEK EQU 1008
- ACTION_FINDUPDATE EQU 1004
- ACTION_FINDINPUT EQU 1005
- ACTION_FINDOUTPUT EQU 1006
- ACTION_END EQU 1007
- ACTION_SET_FILE_SIZE EQU 1022 ; fast file system only
- ACTION_WRITE_PROTECT EQU 1023 ; fast file system only
-
- * new 2.0 packets
- ACTION_SAME_LOCK EQU 40
- ACTION_CHANGE_SIGNAL EQU 995
- ACTION_FORMAT EQU 1020
- ACTION_MAKE_LINK EQU 1021
- *
- *
- ACTION_READ_LINK EQU 1024
- ACTION_FH_FROM_LOCK EQU 1026
- ACTION_IS_FILESYSTEM EQU 1027
- ACTION_CHANGE_MODE EQU 1028
- *
- ACTION_COPY_DIR_FH EQU 1030
- ACTION_PARENT_FH EQU 1031
- ACTION_EXAMINE_ALL EQU 1033
- ACTION_EXAMINE_FH EQU 1034
-
- ACTION_LOCK_RECORD EQU 2008
- ACTION_FREE_RECORD EQU 2009
-
- ACTION_ADD_NOTIFY EQU 4097
- ACTION_REMOVE_NOTIFY EQU 4098
-
- * Tell a file system to serialize the current volume. This is typically
- * done by changing the creation date of the disk. This packet does not take
- * any arguments. NOTE: be prepared to handle failure of this packet for
- * V37 ROM filesystems.
-
- ACTION_SERIALIZE_DISK EQU 4200
-
- * A structure for holding error messages - stored as array with error == 0
- * for the last entry.
-
- STRUCTURE ErrorString,0
- APTR estr_Nums
- APTR estr_Strings
- LABEL ErrorString_SIZEOF
-
- * DOS library node structure.
- * This is the data at positive offsets from the library node.
- * Negative offsets from the node is the jump table to DOS functions
- * node = (STRUCT DosLibrary *) OpenLibrary( "dos.library" .. )
-
- STRUCTURE DosLibrary,0
- STRUCT dl_lib,LIB_SIZE
- APTR dl_Root * Pointer to RootNode, described below
- APTR dl_GV * Pointer to BCPL global vector
- LONG dl_A2 * BCPL standard register values
- LONG dl_A5
- LONG dl_A6
- APTR dl_Errors * PRIVATE pointer to array of error msgs
- APTR dl_TimeReq * PRIVATE pointer to timer request
- APTR dl_UtilityBase * PRIVATE pointer to utility library base
- APTR dl_IntuitionBase * PRIVATE pointer to intuition library base
- LABEL dl_SIZEOF * DosLibrary
-
- *
-
- STRUCTURE RootNode,0
- BPTR rn_TaskArray * [0] is max number of CLI's
- * * [1] is APTR to process id of CLI 1
- * * [n] is APTR to process id of CLI n
- BPTR rn_ConsoleSegment * SegList for the CLI
- STRUCT rn_Time,ds_SIZEOF * Current time
- LONG rn_RestartSeg * SegList for the disk validator process
- BPTR rn_Info * Pointer to the Info structure
- BPTR rn_FileHandlerSegment * code for file handler
- STRUCT rn_CliList,MLH_SIZE * new list of all CLI processes
- * * the first cpl_Array is also rn_TaskArray
- APTR rn_BootProc * private! ptr to msgport of boot fs
- BPTR rn_ShellSegment * seglist for Shell (for NewShell)
- LONG rn_Flags * dos flags
- LABEL rn_SIZEOF * RootNode
-
- BITDEF RN,WILDSTAR,24
- BITDEF RN,PRIVATE1,1
-
- * ONLY to be allocated by DOS!
- STRUCTURE CliProcList,0
- STRUCT cpl_Node,MLN_SIZE
- LONG cpl_First * number of first entry in array
- APTR cpl_Array * pointer to array of process msgport pointers
- * * [0] is max number of CLI's in this entry (n)
- * * [1] is APTR to process id of CLI cpl_First
- * * [n] is APTR to process id of CLI cpl_First+n-1
- LABEL cpl_SIZEOF
-
- STRUCTURE DosInfo,0
- BPTR di_McName * PRIVATE: system resident module list
- di_ResList EQU di_McName
- BPTR di_DevInfo * Device List
- BPTR di_Devices * Currently zero
- BPTR di_Handlers * Currently zero
- APTR di_NetHand * Network handler processid currently zero
- STRUCT di_DevLock,SS_SIZE * do NOT access directly!
- STRUCT di_EntryLock,SS_SIZE * do NOT access directly!
- STRUCT di_DeleteLock,SS_SIZE * do NOT access directly!
- LABEL di_SIZEOF * DosInfo
-
- * structure for the Dos resident list. Do NOT allocate these, use
- * AddSegment(), and heed the warnings in the autodocs!
-
- STRUCTURE Segment,0
- BPTR seg_Next
- LONG seg_UC
- BPTR seg_Seg
- STRUCT seg_Name,4 ; Actually the first 4 chars of BSTR name
- LABEL seg_SIZEOF
-
- CMD_SYSTEM EQU -1
- CMD_INTERNAL EQU -2
- CMD_DISABLED EQU -999
-
-
- * DOS Processes started from the CLI via RUN or NEWCLI have this additional
- * set to data associated with them
-
- STRUCTURE CommandLineInterface,0
- LONG cli_Result2 * Value of IoErr from last command
- BSTR cli_SetName * Name of current directory
- BPTR cli_CommandDir * Head of the path locklist
- LONG cli_ReturnCode * Return code from last command
- BSTR cli_CommandName * Name of current command
- LONG cli_FailLevel * Fail level (set by FAILAT)
- BSTR cli_Prompt * Current prompt (set by PROMPT)
- BPTR cli_StandardInput * Default (terminal) CLI input
- BPTR cli_CurrentInput * Current CLI input
- BSTR cli_CommandFile * Name of EXECUTE command file
- LONG cli_Interactive * Boolean True if prompts required
- LONG cli_Background * Boolean True if CLI created by RUN
- BPTR cli_CurrentOutput * Current CLI output
- LONG cli_DefaultStack * Stack size to be obtained in long words
- BPTR cli_StandardOutput * Default (terminal) CLI output
- BPTR cli_Module * SegList of currently loaded command
- LABEL cli_SIZEOF * CommandLineInterface
-
- * This structure can take on different values depending on whether it is
- * a device, an assigned directory, or a volume. Below is the structure
- * reflecting volumes only. Following that is the structure representing
- * only devices. Following that is the unioned structure representing all
- * the values
-
- * structure representing a volume
-
- STRUCTURE DevList,0
- BPTR dl_Next ; bptr to next device list
- LONG dl_Type ; see DLT below
- APTR dl_Task ; ptr to handler task
- BPTR dl_Lock ; not for volumes
- STRUCT dl_VolumeDate,ds_SIZEOF ; creation date
- BPTR dl_LockList ; outstanding locks
- LONG dl_DiskType ; 'DOS', etc
- LONG dl_unused
- BSTR dl_Name ; bptr to bcpl name
- LABEL DevList_SIZEOF
-
- * device structure (same as the DeviceNode structure in filehandler.i
-
- STRUCTURE DevInfo,0
- BPTR dvi_Next
- LONG dvi_Type
- APTR dvi_Task
- BPTR dvi_Lock
- BSTR dvi_Handler
- LONG dvi_Stacksize
- LONG dvi_Priority
- LONG dvi_Startup
- BPTR dvi_SegList
- BPTR dvi_GlobVec
- BSTR dvi_Name
- LABEL dvi_SIZEOF
-
- * combined structure for devices, assigned directories, volumes
-
- STRUCTURE DosList,0
- BPTR dol_Next ; bptr to next device on lis
- LONG dol_Type ; see DLT below
- APTR dol_Task ; ptr to handler task
- BPTR dol_Lock
-
- STRUCT dol_VolumeDate,0 ; creation date (UNION)
- STRUCT dol_AssignName,0 ; name for assign path (UNION)
- BSTR dol_Handler ; file name to load if seglist is null
- STRUCT dol_List,0 ; List of directories assigned (UNION)
- LONG dol_StackSize ; stacksize to use when starting process
- LONG dol_Priority ; task priority when starting process
-
- STRUCT dol_LockList,0 ; outstanding locks (UNION)
- ULONG dol_Startup ; startup msg: FileSysStartupMsg
- ; for disks
-
- STRUCT dol_DiskType,0 ; 'DOS', etc (UNION)
- BPTR dol_SegList ; already loaded code for new task
-
- BPTR dol_GlobVec ; BCPL global vector
-
- BSTR dol_Name ; bptr to bcpl name
- LABEL DosList_SIZEOF
-
-
-
- * definitions for dl_Type
- DLT_DEVICE EQU 0
- DLT_DIRECTORY EQU 1 ; assign
- DLT_VOLUME EQU 2
- DLT_LATE EQU 3 ; late-binding assign
- DLT_NONBINDING EQU 4 ; non-binding assign (AssignPath)
- DLT_PRIVATE EQU -1 ; for internal use only
-
- * structure return by GetDeviceProc()
- STRUCTURE DevProc,0
- APTR dvp_Port ; struct MsgPort *
- BPTR dvp_Lock
- ULONG dvp_Flags
- APTR dvp_DevNode ; struct DosList * - DON'T TOUCH OR USE!
- LABEL dvp_SIZEOF
-
- * definitions for dvp_Flags
- BITDEF DVP,UNLOCK,0
- BITDEF DVP,ASSIGN,1
-
- * Flags to be passed to LockDosList(), etc
- BITDEF LD,DEVICES,2
- BITDEF LD,VOLUMES,3
- BITDEF LD,ASSIGNS,4
- BITDEF LD,ENTRY,5
- BITDEF LD,DELETE,6
-
- * You MUST specify one of LDF_READ or LDF_WRITE
- BITDEF LD,READ,0
- BITDEF LD,WRITE,1
-
- * actually all but LDF_ENTRY (which is used for internal locking)
- LDF_ALL EQU (LDF_DEVICES!LDF_VOLUMES!LDF_ASSIGNS)
-
- * a lock structure, as returned by Lock() or DupLock()
- STRUCTURE FileLock,0
- BPTR fl_Link ; bcpl pointer to next lock
- LONG fl_Key ; disk block number
- LONG fl_Access ; exclusive or shared
- APTR fl_Task ; handler task's port
- BPTR fl_Volume ; bptr to DLT_VOLUME DosList entry
- LABEL fl_SIZEOF
-
- * error report types for ErrorReport()
- REPORT_STREAM EQU 0 ; a stream
- REPORT_TASK EQU 1 ; a process - unused
- REPORT_LOCK EQU 2 ; a lock
- REPORT_VOLUME EQU 3 ; a volume node
- REPORT_INSERT EQU 4 ; please insert volume
-
- * Special error codes for ErrorReport()
- ABORT_DISK_ERROR EQU 296 ; Read/write error
- ABORT_BUSY EQU 288 ; You MUST replace...
-
- * types for initial packets to shells from run/newcli/execute/system.
- * For shell-writers only
- RUN_EXECUTE EQU -1
- RUN_SYSTEM EQU -2
- RUN_SYSTEM_ASYNCH EQU -3
-
- * Types for fib_DirEntryType. NOTE that both USERDIR and ROOT are
- * directories, and that directory/file checks should use <0 and >=0.
- * This is not necessarily exhaustive! Some handlers may use other
- * values as needed, though <0 and >=0 should remain as supported as
- * possible.
- ST_ROOT EQU 1
- ST_USERDIR EQU 2
- ST_SOFTLINK EQU 3 ; looks like dir, but may point to a file!
- ST_LINKDIR EQU 4 ; hard link to dir
- ST_FILE EQU -3 ; must be negative for FIB!
- ST_LINKFILE EQU -4 ; hard link to file
- ST_PIPEFILE EQU -5 ; for pipes that support ExamineFH
-
- ENDC ; DOS_DOSEXTENS_I
-