Changeset 1993f9a in mainline
- Timestamp:
- 2009-09-15T13:45:23Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ea5f46d
- Parents:
- ec8bab59
- Location:
- contrib
- Files:
-
- 34 added
- 28 deleted
- 14 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
contrib/arch/HelenOS.adl
rec8bab59 r1993f9a 12 12 inst klog klog; 13 13 14 /* VFS */ 15 inst vfs vfs; 16 14 17 [/uspace/lib/libc/bind%ns] 15 18 16 [/us rpace/lib/libc/bind%rd]19 [/uspace/lib/libc/bind%rd] 17 20 bind rd:ns to ns:ns; 18 21 bind rd:dm_driver to devmap:dm_driver; 19 22 20 [/us rpace/lib/libc/bind%klog]23 [/uspace/lib/libc/bind%klog] 21 24 bind klog:ns to ns:ns; 25 26 [/uspace/lib/libc/bind%vfs] 27 bind vfs:ns to ns:ns; 22 28 }; -
contrib/arch/hadlbppp.py
rec8bab59 r1993f9a 48 48 if (trim): 49 49 token = token.strip(" \t") 50 if (token != ""): 51 tokens.append(token) 52 else: 50 51 if (token != ""): 53 52 tokens.append(token) 54 53 55 54 return tokens 56 55 57 def split_tokens(string, delimiters, trim = False ):56 def split_tokens(string, delimiters, trim = False, separate = False): 58 57 "Split string to tokens by delimiters, keep the delimiters" 59 58 … … 66 65 if (len(delim) > 0): 67 66 68 if ((string[i:(i + len(delim))] == delim) and (i > 0)): 69 tokens = cond_append(tokens, string[last:i], trim) 70 last = i 67 if (string[i:(i + len(delim))] == delim): 68 if (separate): 69 tokens = cond_append(tokens, string[last:i], trim) 70 tokens = cond_append(tokens, delim, trim) 71 last = i + len(delim) 72 elif (i > 0): 73 tokens = cond_append(tokens, string[last:i], trim) 74 last = i 75 71 76 i += len(delim) - 1 72 77 break … … 78 83 return tokens 79 84 80 def parse(fname, outf): 81 "Parse particular protocol" 82 83 inf = file(fname, "r") 84 outf.write("### %s\n\n" % fname) 85 86 tokens = split_tokens(inf.read(), ["\n", " ", "\t", "(", ")", "{", "}", "[", "/*", "*/", "#", "*", ";", "+", "||", "|", "!", "?"], True) 87 85 def preproc_bp(outname, tokens): 86 "Preprocess tentative statements in Behavior Protocol" 87 88 result = [] 89 i = 0 90 91 while (i < len(tokens)): 92 if (tokens[i] == "tentative"): 93 if ((i + 1 < len(tokens)) and (tokens[i + 1] == "{")): 94 i += 2 95 start = i 96 level = 1 97 98 while ((i < len(tokens)) and (level > 0)): 99 if (tokens[i] == "{"): 100 level += 1 101 elif (tokens[i] == "}"): 102 level -= 1 103 104 i += 1 105 106 if (level == 0): 107 result.append("(") 108 result.extend(preproc_bp(outname, tokens[start:(i - 1)])) 109 result.append(")") 110 result.append("+") 111 result.append("NULL") 112 else: 113 print "%s: Syntax error in tentative statement" % outname 114 else: 115 print "%s: Unexpected tentative statement" % outname 116 else: 117 result.append(tokens[i]) 118 119 i += 1 120 121 return result 122 123 def parse_bp(base, root, inname, nested, outname, outf, indent): 124 "Parse Behavior Protocol" 125 126 if (nested): 127 if (inname[0:1] == "/"): 128 path = os.path.join(base, ".%s" % inname) 129 nested_root = os.path.dirname(path) 130 else: 131 path = os.path.join(root, inname) 132 nested_root = root 133 134 if (not os.path.isfile(path)): 135 print "%s: Unable to include file %s" % (outname, path) 136 return True 137 138 inf = file(path, "r") 139 else: 140 inf = file(inname, "r") 141 nested_root = root 142 143 tokens = preproc_bp(outname, split_tokens(inf.read(), ["\n", " ", "\t", "(", ")", "{", "}", "[", "]", "/*", "*/", "#", "*", ";", "+", "||", "|", "!", "?"], True, True)) 144 145 inc = False 88 146 empty = True 89 147 comment = False 90 148 lcomment = False 91 indent = 092 149 93 150 for token in tokens: … … 116 173 empty = False 117 174 175 if (inc): 176 outf.write("\n%s(" % tabs(indent)) 177 178 inc_empty = parse_bp(base, nested_root, token, True, outname, outf, indent + 1) 179 if (inc_empty): 180 outf.write("\n%sNULL" % tabs(indent + 1)) 181 182 outf.write("\n%s)" % tabs(indent)) 183 inc = False 184 continue 185 118 186 if ((token == ";") or (token == "+") or (token == "||") or (token == "|")): 119 outf.write(" %s\n" % token) 187 outf.write(" %s" % token) 188 elif (token == "["): 189 inc = True 190 elif (token == "]"): 191 inc = False 120 192 elif (token == "("): 121 outf.write(" %s%s\n" % (tabs(indent), token))193 outf.write("\n%s%s" % (tabs(indent), token)) 122 194 indent += 1 123 195 elif (token == ")"): 196 if (indent == 0): 197 print "%s: Too many closing parentheses" % outname 198 124 199 indent -= 1 125 200 outf.write("\n%s%s" % (tabs(indent), token)) 126 201 elif (token == "{"): 127 outf.write(" %s \n" % token)202 outf.write(" %s" % token) 128 203 indent += 1 129 204 elif (token == "}"): 205 if (indent == 0): 206 print "%s: Too many closing parentheses" % outname 207 130 208 indent -= 1 131 209 outf.write("\n%s%s" % (tabs(indent), token)) 132 210 elif (token == "*"): 133 211 outf.write("%s" % token) 134 else: 135 outf.write("%s%s" % (tabs(indent), token)) 136 212 elif ((token == "!") or (token == "?") or (token == "NULL")): 213 outf.write("\n%s%s" % (tabs(indent), token)) 214 else: 215 outf.write("%s" % token) 216 217 inf.close() 218 219 return empty 220 221 def parse_adl(base, root, inname, nested, outname, outf, indent): 222 "Parse Architecture Description Language" 223 224 if (nested): 225 (infname, inarg) = inname.split("%") 226 227 if (infname[0:1] == "/"): 228 path = os.path.join(base, ".%s" % infname) 229 nested_root = os.path.dirname(path) 230 else: 231 path = os.path.join(root, infname) 232 nested_root = root 233 234 if (not os.path.isfile(path)): 235 print "%s: Unable to include file %s" % (outname, path) 236 return True 237 238 inf = file(path, "r") 239 else: 240 inarg = "%%" 241 inf = file(inname, "r") 242 nested_root = root 243 244 tokens = split_tokens(inf.read(), ["\n", " ", "\t", "%%", "[", "]"], False, True) 245 246 inc = False 247 empty = True 248 newline = True 249 locindent = 0 250 251 for token in tokens: 252 if (empty): 253 empty = False 254 255 if (inc): 256 if (token.find("%") != -1): 257 parse_adl(base, nested_root, token, True, outname, outf, locindent) 258 else: 259 parse_bp(base, nested_root, token, True, outname, outf, locindent) 260 261 inc = False 262 continue 263 264 if (token == "\n"): 265 newline = True 266 locindent = 0 267 outf.write("\n%s" % tabs(indent)) 268 elif (token == "\t"): 269 if (newline): 270 locindent += 1 271 outf.write("%s" % token) 272 elif (token == "%%"): 273 newline = False 274 outf.write("%s" % inarg) 275 elif (token == "["): 276 newline = False 277 inc = True 278 elif (token == "]"): 279 newline = False 280 inc = False 281 else: 282 newline = False; 283 outf.write("%s" % token) 284 285 inf.close() 286 287 return empty 288 289 def open_bp(base, root, inname, outname): 290 "Open Behavior Protocol file" 291 292 outf = file(outname, "w") 293 294 outf.write("### %s\n" % inname) 295 296 empty = parse_bp(base, root, inname, False, outname, outf, 0) 137 297 if (empty): 138 298 outf.write("NULL") 139 299 140 outf.write("\n\n\n") 141 inf.close() 142 143 def recursion(root, output, level): 300 outf.close() 301 302 def open_adl(base, root, inname, outname): 303 "Open Architecture Description file" 304 305 outf = file(outname, "w") 306 307 empty = parse_adl(base, root, inname, False, outname, outf, 0) 308 if (empty): 309 outf.write("/* Empty */") 310 311 outf.close() 312 313 def recursion(base, root, output, level): 144 314 "Recursive directory walk" 145 315 … … 147 317 canon = os.path.join(root, name) 148 318 149 if ( (os.path.isfile(canon)) and (level > 0)):319 if (os.path.isfile(canon)): 150 320 fcomp = split_tokens(canon, ["."]) 321 cname = canon.split("/") 322 323 filtered = False 324 while (not filtered): 325 try: 326 cname.remove(".") 327 except (ValueError): 328 filtered = True 329 330 output_path = os.path.join(output, ".".join(cname)) 331 151 332 if (fcomp[-1] == ".bp"): 152 parse(canon, outf) 333 open_bp(base, root, canon, output_path) 334 elif (fcomp[-1] == ".adl"): 335 open_adl(base, root, canon, output_path) 153 336 154 337 if (os.path.isdir(canon)): 155 recursion( canon, outf, level + 1)338 recursion(base, canon, output, level + 1) 156 339 157 340 def main(): … … 162 345 path = os.path.abspath(sys.argv[1]) 163 346 if (not os.path.isdir(path)): 164 print " <OUTPUT> is not a directory"347 print "Error: <OUTPUT> is not a directory" 165 348 return 166 349 167 recursion(".", path, 0)168 350 recursion(".", ".", path, 0) 351 169 352 if __name__ == '__main__': 170 353 main() -
contrib/arch/uspace/lib/libc/fnc.devmap_device_get_count
rec8bab59 r1993f9a 1 1 [fnc.devmap_get_phone] ; 2 !dm_client.device_get_count 2 tentative { 3 !dm_client.device_get_count 4 } -
contrib/arch/uspace/lib/libc/fnc.devmap_device_get_devices
rec8bab59 r1993f9a 1 1 [fnc.devmap_get_phone] ; 2 !dm_client.device_get_devices { 3 !dm_client.ipc_m_data_read /* buffer */ 2 tentative { 3 !dm_client.device_get_devices { 4 !dm_client.ipc_m_data_read /* buffer */ 5 } 4 6 } -
contrib/arch/uspace/lib/libc/fnc.devmap_device_get_handle
rec8bab59 r1993f9a 1 1 [fnc.devmap_get_phone] ; 2 !dm_client.device_get_handle { 3 !dm_client.ipc_m_data_write /* name */ 2 tentative { 3 !dm_client.device_get_handle { 4 !dm_client.ipc_m_data_write /* name */ 5 } 4 6 } -
contrib/arch/uspace/srv/bd/rd/rd.adl
rec8bab59 r1993f9a 3 3 block_device bd; 4 4 requires: 5 [/uspace/lib/libc/requires%] 5 6 naming_service ns; 6 7 device_mapper_driver dm_driver; 7 [/uspace/lib/libc/requires]8 8 protocol: 9 9 [/uspace/lib/libc/protocol] + -
contrib/arch/uspace/srv/bd/rd/rd.bp
rec8bab59 r1993f9a 1 [/ lib/libc/fnc.devmap_driver_register] ;2 [/ lib/libc/fnc.devmap_device_register]1 [/uspace/lib/libc/fnc.devmap_driver_register] ; 2 [/uspace/lib/libc/fnc.devmap_device_register] -
contrib/arch/uspace/srv/console/console.bp
rec8bab59 r1993f9a 2 2 !kbd.IPC_CONNECT_TO_ME ; 3 3 !ns.IPC_CONNECT_ME_TO /* fb */ ; 4 [ devmap_driver_register] ;4 [/uspace/lib/libc/fnc.devmap_driver_register] ; 5 5 !fb.FB_GET_RESOLUTION ; 6 6 ( 7 [ vp_create] +8 [ vp_switch]7 [fnc.vp_create] + 8 [fnc.vp_switch] 9 9 )* ; 10 [ make_pixmap]* ;11 [ make_anim] ;12 [ vp_switch] ;10 [fnc.make_pixmap]* ; 11 [fnc.make_anim] ; 12 [fnc.vp_switch] ; 13 13 !fb.FB_FLUSH ; 14 14 !fb.FB_GET_CSIZE ; 15 15 !fb.FB_GET_COLOR_CAP ; 16 16 !fb.IPC_M_SHARE_OUT ; 17 [ devmap_device_register]* ;18 [ gcons_redraw_console] ;19 [ set_rgb_color] ;20 [ screen_clear] ;21 [ curs_goto] ;22 [ curs_visibility] ;17 [/uspace/lib/libc/fnc.devmap_device_register]* ; 18 [fnc.gcons_redraw_console] ; 19 [fnc.set_rgb_color] ; 20 [fnc.screen_clear] ; 21 [fnc.curs_goto] ; 22 [fnc.curs_visibility] ; 23 23 ( 24 24 ?console.IPC_M_CONNECT_ME_TO ; 25 [ gcons_notify_connect] ;25 [fnc.gcons_notify_connect] ; 26 26 ( 27 27 ?console.VFS_OUT_READ { 28 [ cons_read]28 [fnc.cons_read] 29 29 } + 30 30 31 31 ?console.VFS_OUT_WRITE { 32 [ cons_write]32 [fnc.cons_write] 33 33 } + 34 34 35 35 ?console.VFS_OUT_SYNC { 36 [f b_pending_flush] ;36 [fnc.fb_pending_flush] ; 37 37 ( 38 38 ( 39 39 !fb.FB_FLUSH ; 40 [ curs_goto]40 [fnc.curs_goto] 41 41 ) + 42 42 NULL … … 59 59 60 60 ?console.CONSOLE_SET_STYLE { 61 [f b_pending_flush] ;61 [fnc.fb_pending_flush] ; 62 62 ( 63 [ set_style] +63 [fnc.set_style] + 64 64 NULL 65 65 ) … … 67 67 68 68 ?console.CONSOLE_SET_COLOR { 69 [f b_pending_flush] ;69 [fnc.fb_pending_flush] ; 70 70 ( 71 [ set_color] +71 [fnc.set_color] + 72 72 NULL 73 73 ) … … 75 75 76 76 ?console.CONSOLE_SET_RGB_COLOR { 77 [f b_pending_flush] ;77 [fnc.fb_pending_flush] ; 78 78 ( 79 [ set_rgb_color] +79 [fnc.set_rgb_color] + 80 80 NULL 81 81 ) … … 83 83 84 84 ?console.CONSOLE_CURSOR_VISIBILITY { 85 [f b_pending_flush] ;85 [fnc.fb_pending_flush] ; 86 86 ( 87 [ curs_visibility] +87 [fnc.curs_visibility] + 88 88 NULL 89 89 ) … … 97 97 98 98 ?console.IPC_M_PHONE_HUNGUP { 99 [ gcons_notify_disconnect]99 [fnc.gcons_notify_disconnect] 100 100 } 101 101 )* -
contrib/arch/uspace/srv/devmap/devmap.adl
rec8bab59 r1993f9a 4 4 5 5 /* Register as a new driver */ 6 ipcarg_t driver_register( void);6 ipcarg_t driver_register(in_copy string name); 7 7 8 8 /* Unregister all devices and the driver itself */ … … 10 10 11 11 /* Register new device and return handle */ 12 ipcarg_t device_register( out ipcarg_t handle);12 ipcarg_t device_register(in_copy string name, out ipcarg_t handle); 13 13 14 14 /* Unregister device */ … … 16 16 17 17 /* Resolve device name to handle */ 18 ipcarg_t device_get_handle(in ipcarg_t flags );18 ipcarg_t device_get_handle(in ipcarg_t flags, in_copy string name); 19 19 20 20 /* Get device name for a given handle */ 21 21 ipcarg_t device_get_name(in ipcarg_t handle); 22 23 /* Transfer driver or device name */24 ipcarg_t ipc_m_data_write(in ipcarg_t src_addr, in ipcarg_t src_size, out ipcarg_t dst_addr, out ipcarg_t dst_size);25 22 26 23 /* Close connection */ … … 35 32 36 33 /* Resolve device name to handle */ 37 ipcarg_t device_get_handle(in ipcarg_t flags );34 ipcarg_t device_get_handle(in ipcarg_t flags, in_copy string name); 38 35 39 36 /* Get device name for a given handle */ … … 50 47 51 48 /* Get an array of (device_name, handle) pairs */ 52 ipcarg_t device_get_devices(void) 53 54 /* Transfer device name from client */ 55 ipcarg_t ipc_m_data_write(in ipcarg_t src_addr, in ipcarg_t src_size, out ipcarg_t dst_addr, out ipcarg_t dst_size); 56 57 /* Transfer (device_name, handle) pairs to client */ 58 ipcarg_t ipc_m_data_read(in ipcarg_t src_addr, in ipcarg_t src_size, out ipcarg_t dst_addr, out ipcarg_t dst_size); 49 ipcarg_t device_get_devices(out_copy stream data) 59 50 60 51 /* Close connection */ … … 70 61 device_mapper_client dm_client; 71 62 requires: 72 [/ lib/libc/iface.requires]63 [/uspace/lib/libc/requires%] 73 64 protocol: 74 65 [devmap.bp] -
contrib/arch/uspace/srv/fs/devfs/devfs.bp
rec8bab59 r1993f9a 1 [ ../../../lib/libc/devmap_get_phone] ;1 [/uspace/lib/libc/fnc.devmap_get_phone] ; 2 2 !ns.IPC_M_CONNECT_ME_TO /* vfs */ ; 3 [ ../../../lib/libfs/fs_register] ;3 [/uspace/lib/libfs/fnc.fs_register] ; 4 4 ( 5 5 ?fs.IPC_M_CONNECT_ME_TO ; … … 13 13 ?fs.VFS_OUT_LOOKUP { 14 14 ( 15 [ ../../../lib/libc/devmap_device_get_handle] ;16 [ ../../../lib/libc/devmap_device_connect]15 [/uspace/lib/libc/fnc.devmap_device_get_handle] ; 16 [/uspace/lib/libc/fnc.devmap_device_connect] 17 17 ) + 18 18 NULL … … 26 26 ) + 27 27 ( 28 [ ../../../lib/libc/devmap_device_get_count] ;29 [ ../../../lib/libc/devmap_device_get_devices]28 [/uspace/lib/libc/fnc.devmap_device_get_count] ; 29 [/uspace/lib/libc/fnc.devmap_device_get_devices] 30 30 ) 31 31 } … … 51 51 52 52 ?fs.VFS_OUT_OPEN_NODE { 53 [ ../../../lib/libc/devmap_device_connect] +53 [/uspace/lib/libc/fnc.devmap_device_connect] + 54 54 NULL 55 55 } + -
contrib/arch/uspace/srv/fs/fat/fat.bp
rec8bab59 r1993f9a 1 1 !ns.IPC_M_CONNECT_ME_TO /* vfs */ ; 2 [ ../../../lib/libfs/fs_register] ;2 [/uspace/lib/libfs/fnc.fs_register] ; 3 3 ( 4 4 ?fs.IPC_M_CONNECT_ME_TO ; … … 9 9 10 10 ?fs.VFS_OUT_MOUNT { 11 [ ../../../lib/libfs/libfs_mount]11 [/uspace/lib/libfs/fnc.libfs_mount] 12 12 } + 13 13 14 14 ?fs.VFS_OUT_LOOKUP { 15 [ ../../../lib/libfs/libfs_lookup]15 [/uspace/lib/libfs/fnc.libfs_lookup] 16 16 } + 17 17 … … 31 31 32 32 ?fs.VFS_OUT_OPEN_NODE { 33 [ ../../../lib/libfs/libfs_open_node]33 [/uspace/lib/libfs/fnc.libfs_open_node] 34 34 } + 35 35 36 36 ?fs.VFS_OUT_STAT { 37 [ ../../../lib/libfs/libfs_stat]37 [/uspace/lib/libfs/fnc.libfs_stat] 38 38 } + 39 39 -
contrib/arch/uspace/srv/fs/tmpfs/tmpfs.bp
rec8bab59 r1993f9a 1 1 !ns.IPC_M_CONNECT_ME_TO /* vfs */ ; 2 [ ../../../lib/libfs/fs_register] ;2 [/uspace/lib/libfs/fnc.fs_register] ; 3 3 ( 4 4 ?fs.IPC_M_CONNECT_ME_TO ; … … 9 9 10 10 ?fs.VFS_OUT_MOUNT { 11 [ ../../../lib/libfs/libfs_mount]11 [/uspace/lib/libfs/fnc.libfs_mount] 12 12 } + 13 13 14 14 ?fs.VFS_OUT_LOOKUP { 15 [ ../../../lib/libfs/libfs_lookup]15 [/uspace/lib/libfs/fnc.libfs_lookup] 16 16 } + 17 17 … … 31 31 32 32 ?fs.VFS_OUT_OPEN_NODE { 33 [ ../../../lib/libfs/libfs_open_node]33 [/uspace/lib/libfs/fnc.libfs_open_node] 34 34 } + 35 35 36 36 ?fs.VFS_OUT_STAT { 37 [ ../../../lib/libfs/libfs_stat]37 [/uspace/lib/libfs/fnc.libfs_stat] 38 38 } + 39 39 -
contrib/arch/uspace/srv/vfs/vfs.bp
rec8bab59 r1993f9a 1 !ns.IPC_M_CONNECT_TO_ME ; 2 ( 3 ?vfs.IPC_M_CONNECT_ME_TO ; 4 ( 5 ?vfs.VFS_IN_REGISTER { 6 ?vfs.IPC_M_DATA_WRITE ; 7 ?vfs.IPC_M_CONNECT_TO_ME ; 8 ?vfs.IPC_M_SHARE_IN 9 } + 10 11 ?vfs.VFS_IN_MOUNT { 12 ?vfs.IPC_M_DATA_WRITE /* mount point */ ; 13 ?vfs.IPC_M_DATA_WRITE /* mount options */ ; 14 ?vfs.IPC_M_DATA_WRITE /* fs name */ ; 15 ?vfs.IPC_M_PING ; 16 ( 17 18 !fs.VFS_OUT_MOUNTED ; 19 !fs.IPC_M_DATA_WRITE /* mount options */ 20 ) /* root fs */ + 21 ( 22 !fs.VFS_OUT_MOUNT ; 23 !fs.IPC_M_CONNECTION_CLONE ; 24 !fs.VFS_M_DATA_WRITE /* mount options */ 25 ) /* non-root fs */ 26 } + 27 28 ?vfs.VFS_IN_OPEN { 29 ?vfs.IPC_M_DATA_WRITE /* path */ ; 30 [vfs_lookup_internal] ; 31 ( 32 ( 33 [vfs_grab_phone] ; 34 !fs.VFS_OUT_TRUNCATE ; 35 [vfs_release_phone] 36 ) + 37 NULL 38 ) 39 } + 40 41 ?vfs.VFS_IN_OPEN_NODE { 42 [vfs_grab_phone] ; 43 !fs.VFS_OUT_OPEN_NODE ; 44 [vfs_release_phone] ; 45 ( 46 ( 47 [vfs_grab_phone] ; 48 !fs.VFS_OUT_TRUNCATE ; 49 [vfs_release_phone] 50 ) + 51 NULL 52 ) 53 } + 54 55 ?vfs.VFS_IN_CLOSE { 56 [vfs_grab_phone] ; 57 !fs.VFS_OUT_CLOSE ; 58 [vfs_release_phone] 59 } + 60 61 ?vfs.VFS_IN_READ { 62 ?vfs.IPC_M_DATA_READ { 63 [vfs_grab_phone] ; 64 !fs.VFS_OUT_READ /* payload */ ; 65 !fs.IPC_M_DATA_READ /* forwarded */ ; 66 [vfs_release_phone] 67 } 68 } + 69 70 ?vfs.VFS_IN_WRITE { 71 ?vfs.IPC_M_DATA_WRITE { 72 [vfs_grab_phone] ; 73 !fs.VFS_OUT_WRITE /* payload */ ; 74 !fs.IPC_M_DATA_WRITE /* forwarded */ ; 75 [vfs_release_phone] 76 } 77 } + 78 79 ?vfs.VFS_IN_SEEK + 80 81 ?vfs.VFS_IN_TRUNCATE { 82 [vfs_grab_phone] ; 83 !fs.VFS_OUT_TRUNCATE ; 84 [vfs_release_phone] 85 } + 86 87 ?vfs.VFS_IN_FSTAT { 88 ?vfs.IPC_M_DATA_READ /* struct stat */ { 89 [vfs_grab_phone] ; 90 !fs.VFS_OUT_STAT ; 91 !fs.IPC_M_DATA_READ /* forwarded */ ; 92 [vfs_release_phone] 93 } 94 } + 95 96 ?vfs.VFS_IN_STAT { 97 ?vfs.IPC_M_DATA_WRITE /* path */ ; 98 ?vfs.IPC_M_DATA_READ /* struct stat */ { 99 [vfs_lookup_internal] ; 100 !fs.VFS_OUT_STAT ; 101 !fs.IPC_M_DATA_READ /* forwarded */ 102 } 103 } + 104 105 ?vfs.VFS_IN_MKDIR { 106 ?vfs.IPC_M_DATA_WRITE /* path */ ; 107 [vfs_lookup_internal] 108 } + 109 110 ?vfs.VFS_IN_UNLINK { 111 ?vfs.IPC_M_DATA_WRITE /* path */ ; 112 [vfs_lookup_internal] 113 } + 114 115 ?vfs.VFS_IN_RENAME { 116 ?vfs.IPC_M_DATA_WRITE /* old path */ ; 117 ?vfs.IPC_M_DATE_WRITE /* new path */ ; 118 [vfs_lookup_internal] /* lookup old path */ ; 119 [vfs_lookup_internal] /* lookup parent of new path */ ; 120 [vfs_lookup_internal] /* destroy old link for the new path */ ; 121 [vfs_lookup_internal] /* create new link for the new path */ ; 122 [vfs_lookup_internal] /* destroy link for the old path */ 123 } + 124 125 ?vfs.VFS_IN_SYNC { 126 !fs.VFS_OUT_SYNC 127 } 128 129 )* ; 130 ?vfs.IPC_M_PHONE_HUNGUP 131 )* 1 !ns.ipc_m_connect_to_me -
contrib/highlight/adl.syntax
rec8bab59 r1993f9a 18 18 19 19 keyword whole ipcarg_t yellow 20 keyword whole string yellow 21 keyword whole stream yellow 20 22 keyword whole void yellow 21 23 22 24 keyword whole in yellow 25 keyword whole in_copy yellow 23 26 keyword whole out yellow 27 keyword whole out_copy yellow 24 28 25 29 keyword whole protocol yellow
Note:
See TracChangeset
for help on using the changeset viewer.