1
0
mirror of https://github.com/DoctorWkt/unix-jun72.git synced 2026-02-02 15:01:52 +00:00
Files
DoctorWkt.unix-jun72/pages/e07-08
2008-04-26 00:04:36 +00:00

54 lines
2.0 KiB
Plaintext

jsr r0,arg2 / get arguments special and name
tst mnti / is the i-number of the cross device file zero?
bne errora / no, error
jsr r0,getspl / get special files device number in r1
mov (sp)+,u.namep / put the name of file to be placed on the
/ device
mov r1,-(sp) / save the device number
jsr r0,namei / get the i-number of the file
br errora
mov r1,mnti / put it in mnti
1:
tstb sb1+1 / is 15th bit of I/O queue entry for dismountable
/ device set?
bne 1b / (inhibit bit) yes, skip writing
mov (sp),mntd / no, put the device number in mntd
movb (sp),sb1 / put the device number in the lower byte of the
/ I/O queue entry
mov (sp)+,cdev / put device number in cdev
bis $2000,sb1 / set the read bit
jsr r0,ppoke / read in entire file system
1:
tstb sb1+1 / done reading?
bne 1b / no, wait
br sysreta / yes
sysumount: / special dismount file system
jsr r0,arg; u.namep / point u.namep to special
jsr r0,getspl / get the device number in r1
cmp r1,mntd / is it equal to the last device mounted?
bne errora / no error
1:
tstb sb1+1 / yes, is the device still doing I/O (inhibit
/ bit set)?
bne 1b / yes, wait
clr mntd / no, clear these
clr mnti
br sysreta / return
getspl: / get device number from a special file name
jsr r0,namei / get the i-number of the special file
br errora / no such file
sub $4,r1 / i-number-4 rk=1,tap=2+n
ble errora / less than 0? yes, error
cmp r1,$9. / greater than 9 tap 7
bgt errora / yes, error
rts r0 / return with device number in r1
errora:
jmp error / see 'error' routine
sysreta:
jmp sysret / see 'sysret' routine