03250 #include "../h/param.h" 03251 #include "../h/systm.h" 03252 03253 /* 03254 * This table is the switch used to transfer 03255 * to the appropriate routine for processing a system call. 03256 * Each row contains the number of arguments expected 03257 * and a pointer to the routine. 03258 */ 03259 int alarm(); 03260 int mpxchan(); 03261 int chdir(); 03262 int chmod(); 03263 int chown(); 03264 int chroot(); 03265 int close(); 03266 int creat(); 03267 int dup(); 03268 int exec(); 03269 int exece(); 03270 int fork(); 03271 int fstat(); 03272 int getgid(); 03273 int getpid(); 03274 int getuid(); 03275 int gtime(); 03276 int gtty(); 03277 int ioctl(); 03278 int kill(); 03279 int link(); 03280 int mknod(); 03281 int nice(); 03282 int nosys(); 03283 int nullsys(); 03284 int open(); 03285 int pause(); 03286 int pipe(); 03287 int profil(); 03288 int ptrace(); 03289 int read(); 03290 int rexit(); 03291 int saccess(); 03292 int sbreak(); 03293 int seek(); 03294 int setgid(); 03295 int setuid(); 03296 int smount(); 03297 int ssig(); 03298 int stat(); 03299 int stime(); 03300 int stty(); 03301 int sumount(); 03302 int ftime(); 03303 int sync(); 03304 int sysacct(); 03305 int syslock(); 03306 int sysphys(); 03307 int times(); 03308 int umask(); 03309 int unlink(); 03310 int utime(); 03311 int wait(); 03312 int write(); 03313 03314 struct sysent sysent[64] = 03315 { 03316 0, 0, nullsys, /* 0 = indir */ 03317 1, 1, rexit, /* 1 = exit */ 03318 0, 0, fork, /* 2 = fork */ 03319 3, 1, read, /* 3 = read */ 03320 3, 1, write, /* 4 = write */ 03321 2, 0, open, /* 5 = open */ 03322 1, 1, close, /* 6 = close */ 03323 0, 0, wait, /* 7 = wait */ 03324 2, 0, creat, /* 8 = creat */ 03325 2, 0, link, /* 9 = link */ 03326 1, 0, unlink, /* 10 = unlink */ 03327 2, 0, exec, /* 11 = exec */ 03328 1, 0, chdir, /* 12 = chdir */ 03329 0, 0, gtime, /* 13 = time */ 03330 3, 0, mknod, /* 14 = mknod */ 03331 2, 0, chmod, /* 15 = chmod */ 03332 3, 0, chown, /* 16 = chown; now 3 args */ 03333 1, 0, sbreak, /* 17 = break */ 03334 2, 0, stat, /* 18 = stat */ 03335 4, 1, seek, /* 19 = seek; now 3 args */ 03336 0, 0, getpid, /* 20 = getpid */ 03337 3, 0, smount, /* 21 = mount */ 03338 1, 0, sumount, /* 22 = umount */ 03339 1, 1, setuid, /* 23 = setuid */ 03340 0, 0, getuid, /* 24 = getuid */ 03341 2, 2, stime, /* 25 = stime */ 03342 4, 1, ptrace, /* 26 = ptrace */ 03343 1, 1, alarm, /* 27 = alarm */ 03344 2, 1, fstat, /* 28 = fstat */ 03345 0, 0, pause, /* 29 = pause */ 03346 2, 0, utime, /* 30 = utime */ 03347 2, 1, stty, /* 31 = stty */ 03348 2, 1, gtty, /* 32 = gtty */ 03349 2, 0, saccess, /* 33 = access */ 03350 1, 1, nice, /* 34 = nice */ 03351 1, 0, ftime, /* 35 = ftime; formerly sleep */ 03352 0, 0, sync, /* 36 = sync */ 03353 2, 1, kill, /* 37 = kill */ 03354 0, 0, nullsys, /* 38 = switch; inoperative */ 03355 0, 0, nullsys, /* 39 = setpgrp (not in yet) */ 03356 1, 1, nosys, /* 40 = tell (obsolete) */ 03357 2, 2, dup, /* 41 = dup */ 03358 0, 0, pipe, /* 42 = pipe */ 03359 1, 0, times, /* 43 = times */ 03360 4, 0, profil, /* 44 = prof */ 03361 0, 0, nosys, /* 45 = unused */ 03362 1, 1, setgid, /* 46 = setgid */ 03363 0, 0, getgid, /* 47 = getgid */ 03364 2, 0, ssig, /* 48 = sig */ 03365 0, 0, nosys, /* 49 = reserved for USG */ 03366 0, 0, nosys, /* 50 = reserved for USG */ 03367 1, 0, sysacct, /* 51 = turn acct off/on */ 03368 3, 0, sysphys, /* 52 = set user physical addresses */ 03369 1, 0, syslock, /* 53 = lock user in core */ 03370 3, 0, ioctl, /* 54 = ioctl */ 03371 0, 0, nosys, /* 55 = readwrite (in abeyance) */ 03372 4, 0, mpxchan, /* 56 = creat mpx comm channel */ 03373 0, 0, nosys, /* 57 = reserved for USG */ 03374 0, 0, nosys, /* 58 = reserved for USG */ 03375 3, 0, exece, /* 59 = exece */ 03376 1, 0, umask, /* 60 = umask */ 03377 1, 0, chroot, /* 61 = chroot */ 03378 0, 0, nosys, /* 62 = x */ 03379 0, 0, nosys /* 63 = used internally */ 03380 }; 03381 03382 03383 03384 03385 03386 03387 03388 03389 03390 03391 03392 03393 03394 03395 03396 03397 03398 03399