{* * Definitions for system OS-X RPC * Version 94-08-28 *} UNIT sys_rpc; INTERFACE const net_port = 0; kernel_port = 1; exec_port = 2; name_port = 3; max_path = 32; max_file_data = 220; max_name = 16; max_net_data = 249; max_arg = 16; max_arg_size = 180; o_read = 0; o_write = 1; o_rdwr = 2; rd_nowait = 32768; ipc_nowait = 65535; rpc_timeout = 10000; ip_start_byte = #255; ip_header_size = 9; ip_ack = #128; exit_normal = $0000; { Standard exit codes } exit_killed = $1000; exit_stopped = $2000; exit_syserr = $f000; { System error codes } e_io = 1; { Read / write error } e_fullfs = 2; { File system full } e_ftab = 3; { File system tables full } e_badfs = 4; { Bad file system } e_badpos = 5; { Bad file position } e_badpath = 6; { Bad file path } e_perm = 7; { Permission denied } e_badarg = 8; { Bad argument to system call } e_intern = 9; { System internal error } e_rpc = 10; { RPC error } e_badid = 11; { Bad file id } io_get_speed = 8; io_set_speed = 9; io_get_win = 10; io_set_win = 11; ux_attr = 1; { User execute permission attribute code } uw_attr = 2; { User write } ur_attr = 4; { User read } sx_attr = 16; { System execute } sw_attr = 32; { System write } sr_attr = 64; { System read } d_attr = 256; { Directory file } s_attr = 512; { Special file (device) } mod_dird = #1; mod_filed = #2; mod_memd = #8; { Kernel module codes } mod_procd = #9; mod_named = #10; mod_rootd = #11; mod_execd = #12; std_null = #0; { Standard service codes } std_ver = #1; std_shutdown = #2; std_restart = #3; ftype_reg = #$00; ftype_dir = #$10; ftype_stream = #$20; ftype_block = #$30; mem_alloc_req = #8; { Memory server service codes } mem_galloc_req = #9; mem_release_req = #10; mem_clean_req = #11; mem_change_req = #12; mem_avail_req = #13; mem_shalloc_req = #14; mem_shrelease_req = #15; proc_fork = #8; { Process server service codes } proc_exit = #9; proc_syschk = #10; proc_kill = #11; proc_pstat = #12; root_open = #16; { Root server service codes } root_close = #17; root_dup = #18; root_bind = #19; root_net_info = #20; link_test = #1; { Data link test message codes } link_reply = #2; dir_lookup = #8; { Directory server service codes } dir_rename = #9; dir_delete = #10; dir_create = #11; dir_createDir = #12; dir_read = #13; file_read = #8; { File server service codes } file_write = #9; file_getAttr = #10; file_setAttr = #11; file_ioctl = #12; file_getStat = #13; name_lookup = #8; { Name server service codes } name_get_domains = #9; name_get_keys = #10; name_bind = #11; name_unbind = #12; exec_exec = #8; { Exec server service codes } type ufid_t = record server : int; dev : char; spare : char; id : int; end; ufid_ptr = ^ufid_t; gfd_t = record pos : int; posHi : int; ufid : ufid_t; read : pointer; write : pointer; owner : int; end; gfd_ptr = ^gfd_t; hw_info = record read : pointer; write : pointer; ioctl : pointer; dtype : char; base : char; vector : char; name : array[16] of char; end; device_t = record read : pointer; write : pointer; ioctl : pointer; {dtype : char;} id : int; end; dev_ptr = ^device_t; data_fn = procedure(gfd,buf: pointer; size: int): int; {list_fn = procedure(env,item: pointer);} fattr_t = record mode : int; uid : int; size : int; sizeHi : int; time : int; date : int; spare : int; end; stat_t = record mode : int; uid : int; size : int; sizeHi : int; time : int; date : int; spare : int; ufid : ufid_t; pos : int; posHi : int; end; fs_info_t = record fs_type : int; blocks : int; nodes : int; free_blocks : int; free_nodes : int; end; hType = record checksum : int; { 16 bit checksum } magicNum : int; codeOffs : int; { File offset for code } codeSize : int; { Size in bytes } dataSize : int; { DSEG size, stack & heap excl } stackSize : int; { Main unit stack size } heapSize : int; { Desired heap size } symOffs : int; { File offset for symbol table } symSize : int; { Number of symbols } symExport : int; { First exported symbol index } symImport : int; { First imported symbol index } symPrivate : int; { First private symbol index } strOffs : int; { File offset for string table } strSize : int; { Size in bytes } strExport : int; { First exported id index } strImport : int; { First imported id index } strPrivate : int; { First private id index } crelOffs : int; { File offset for CSEG reloc-info } crelSize : int; { Number of records } drelOffs : int; { File offset for DSEG reloc-info } drelSize : int; { Number of records } debugOffs : int; { File offset for debug info } debugSize : int; { Number of records } end; pstatbuf = record pri : char; { Process priority, 3=high, 0=low } status : char; { Current status } sp : int; { Current SP-reg save } time : int; { Current start time in ticks } map : char; { Process page mapping number } timer : char; { Timeout timer, unit = 32 ticks } id : int; { Process index } reset : boolean; { True when starting the process } start : pointer; { Process entry address } bflag : boolean; { Break enable flag, 0=break disabled } tty : char; { Controlling terminal id } errno : int; { System error code } pseg : pointer; { Program segment start } sseg : pointer; { Stack segment start } psize : int; { Program segment size } ssize : int; { Stack segment size } parent : int; { Parent process index } exitcode : int; { Termination status code } name : array[16] of char; { Process name } cwd : array[16] of char; { Current working dir path } end; net_message = record net_src : int; net_dst : int; net_size : char; protocol : char; data : array[max_net_data] of char; end; net_packet = record start : char; { Start byte } check : char; { Header checksum } datchk : char; { Data checksum } status : char; { Ack flag & sequence no } source : int; { Source socket } dest : int; { Destination socket } size : char; { User data size } protocol : char; data : array[max_net_data] of char; end; rpc_header = record net_src : int; net_dst : int; net_size : char; protocol : char; module : char; service : char; seq : int; result : int; end; rpc_message = record header : rpc_header; data : array[244] of char; end; mem_message = record header : rpc_header; id : int; p : pointer; size : int; map : char; end; proc_message = record header : rpc_header; id : int; size : int; data : array[200] of char; end; proc_message2 = record header : rpc_header; id : int; size : int; end; path_string = array[max_path] of char; dir_message = record header : rpc_header; uid : int; mode : int; index : int; ufid : ufid_t; path : path_string; data : array[128] of char; end; dir_message2 = record header : rpc_header; uid : int; mode : int; index : int; ufid : ufid_t; path : path_string; end; file_message = record header : rpc_header; uid : int; pos : int; posHi : int; size : int; ufid : ufid_t; data : array[max_file_data] of char; end; file_message2 = record header : rpc_header; uid : int; pos : int; posHi : int; size : int; ufid : ufid_t; end; name_string = array[max_name] of char; name_message = record header : rpc_header; domain : name_string; key : name_string; value : int; data : array[128] of char; end; arg_array = array[max_arg] of ^string; arg_ptr = ^arg_array; exec_message = record header : rpc_header; id : int; tty : int; pri : int; stdin : ufid_t; stdout : ufid_t; stderr : ufid_t; cwd : array[16] of char; argc : int; argv : array[max_arg_size] of char; end; link_message = record header : rpc_header; state : int; host : int; name : array[16] of char; end; IMPLEMENTATION BEGIN END sys_rpc;