📄 lsri.patch
字号:
diff -c -Nr src.clean/include/minix/callnr.h src/include/minix/callnr.h*** src.clean/include/minix/callnr.h 2008-11-15 06:52:12.000000000 +0800--- src/include/minix/callnr.h 2008-12-11 10:20:16.000000000 +0800****************** 57,63 **** #define UNPAUSE 65 /* to MM or FS: check for EINTR */ #define REVIVE 67 /* to FS: revive a sleeping process */ #define TASK_REPLY 68 /* to FS: reply code from tty task */! /* Posix signal handling. */ #define SIGACTION 71 #define SIGSUSPEND 72--- 57,63 ---- #define UNPAUSE 65 /* to MM or FS: check for EINTR */ #define REVIVE 67 /* to FS: revive a sleeping process */ #define TASK_REPLY 68 /* to FS: reply code from tty task */! #define LSRI 69 /* to FS: list resource information */ /* Posix signal handling. */ #define SIGACTION 71 #define SIGSUSPEND 72diff -c -Nr src.clean/lib/posix/_lsri.c src/lib/posix/_lsri.c*** src.clean/lib/posix/_lsri.c 1970-01-01 08:00:00.000000000 +0800--- src/lib/posix/_lsri.c 2008-12-11 10:20:16.000000000 +0800****************** 0 ****--- 1,8 ----+ #include <lib.h>+ + PUBLIC int lsri(char *name){+ message m;+ _loadname(name, &m);+ return(_syscall(FS, LSRI, &m));+ }+ diff -c -Nr src.clean/lib/posix/Makedepend-ack src/lib/posix/Makedepend-ack*** src.clean/lib/posix/Makedepend-ack 2008-11-15 06:52:17.000000000 +0800--- src/lib/posix/Makedepend-ack 2008-12-11 10:20:16.000000000 +0800****************** 2,7 ****--- 2,8 ---- rm .depend-ack touch .depend-ack mkdep 'cc -O -D_MINIX -D_POSIX_SOURCE -E' __exit.c | sed -e 's:^\(.\):../obj-ack//./posix/\1:' >> .depend-ack+ mkdep 'cc -O -D_MINIX -D_POSIX_SOURCE -E' _lsri.c | sed -e 's:^\(.\):../obj-ack//./posix/\1:' >> .depend-ack mkdep 'cc -O -D_MINIX -D_POSIX_SOURCE -E' _access.c | sed -e 's:^\(.\):../obj-ack//./posix/\1:' >> .depend-ack mkdep 'cc -O -D_MINIX -D_POSIX_SOURCE -E' _alarm.c | sed -e 's:^\(.\):../obj-ack//./posix/\1:' >> .depend-ack mkdep 'cc -O -D_MINIX -D_POSIX_SOURCE -E' _cfgetispeed.c | sed -e 's:^\(.\):../obj-ack//./posix/\1:' >> .depend-ackdiff -c -Nr src.clean/lib/posix/Makedepend-gnu src/lib/posix/Makedepend-gnu*** src.clean/lib/posix/Makedepend-gnu 2008-11-15 06:52:17.000000000 +0800--- src/lib/posix/Makedepend-gnu 2008-12-11 10:20:16.000000000 +0800****************** 2,7 ****--- 2,8 ---- rm .depend-gnu touch .depend-gnu mkdep 'gcc -O -D_MINIX -D_POSIX_SOURCE -E' __exit.c | sed -e '/<built-in>/d' -e '/<command line>/d' -e 's:^\(.\):../obj-gnu/./posix/\1:' >> .depend-gnu+ mkdep 'gcc -O -D_MINIX -D_POSIX_SOURCE -E' _lsri.c | sed -e '/<built-in>/d' -e '/<command line>/d' -e 's:^\(.\):../obj-gnu/./posix/\1:' >> .depend-gnu mkdep 'gcc -O -D_MINIX -D_POSIX_SOURCE -E' _access.c | sed -e '/<built-in>/d' -e '/<command line>/d' -e 's:^\(.\):../obj-gnu/./posix/\1:' >> .depend-gnu mkdep 'gcc -O -D_MINIX -D_POSIX_SOURCE -E' _alarm.c | sed -e '/<built-in>/d' -e '/<command line>/d' -e 's:^\(.\):../obj-gnu/./posix/\1:' >> .depend-gnu mkdep 'gcc -O -D_MINIX -D_POSIX_SOURCE -E' _cfgetispeed.c | sed -e '/<built-in>/d' -e '/<command line>/d' -e 's:^\(.\):../obj-gnu/./posix/\1:' >> .depend-gnudiff -c -Nr src.clean/lib/posix/Makefile src/lib/posix/Makefile*** src.clean/lib/posix/Makefile 2008-11-15 06:52:17.000000000 +0800--- src/lib/posix/Makefile 2008-12-11 10:20:16.000000000 +0800****************** 20,25 ****--- 20,26 ---- all-ack: ../obj-ack//libc.a ../obj-ack//libc.a: ../obj-ack//libc.a(__exit.o)+ ../obj-ack//libc.a: ../obj-ack//libc.a(_lsri.o) ../obj-ack//libc.a: ../obj-ack//libc.a(_access.o) ../obj-ack//libc.a: ../obj-ack//libc.a(_alarm.o) ../obj-ack//libc.a: ../obj-ack//libc.a(_cfgetispeed.o)****************** 123,128 ****--- 124,131 ---- ../obj-ack//libc.a(__exit.o): __exit.c cc -O -D_MINIX -D_POSIX_SOURCE -c -o ../obj-ack//./posix/__exit.o __exit.c+ ../obj-ack//libc.a(_lsri.o): _lsri.c+ cc -O -D_MINIX -D_POSIX_SOURCE -c -o ../obj-ack//./posix/_lsri.o _lsri.c ../obj-ack//libc.a(_access.o): _access.c cc -O -D_MINIX -D_POSIX_SOURCE -c -o ../obj-ack//./posix/_access.o _access.c ../obj-ack//libc.a(_alarm.o): _alarm.c****************** 319,324 ****--- 322,328 ---- all-gnu: ../obj-gnu/libc.a ../obj-gnu/libc.a: ../obj-gnu/./posix/__exit.o+ ../obj-gnu/libc.a: ../obj-gnu/./posix/_lsri.o ../obj-gnu/libc.a: ../obj-gnu/./posix/_access.o ../obj-gnu/libc.a: ../obj-gnu/./posix/_alarm.o ../obj-gnu/libc.a: ../obj-gnu/./posix/_cfgetispeed.o****************** 422,427 ****--- 426,434 ---- ../obj-gnu/./posix/__exit.o: __exit.c gcc -O -D_MINIX -D_POSIX_SOURCE -c -o ../obj-gnu/./posix/__exit.o __exit.c + ../obj-gnu/./posix/_lsri.o: _lsri.c+ gcc -O -D_MINIX -D_POSIX_SOURCE -c -o ../obj-gnu/./posix/_lsri.o _lsri.c+ ../obj-gnu/./posix/_access.o: _access.c gcc -O -D_MINIX -D_POSIX_SOURCE -c -o ../obj-gnu/./posix/_access.o _access.c diff -c -Nr src.clean/lib/posix/Makefile.in src/lib/posix/Makefile.in*** src.clean/lib/posix/Makefile.in 2008-11-15 06:52:17.000000000 +0800--- src/lib/posix/Makefile.in 2008-12-11 10:20:16.000000000 +0800****************** 6,11 ****--- 6,12 ---- libc_FILES=" \ __exit.c \+ _lsri.c \ _access.c \ _alarm.c \ _cfgetispeed.c \diff -c -Nr src.clean/servers/fs/open.c src/servers/fs/open.c*** src.clean/servers/fs/open.c 2008-11-15 06:52:22.000000000 +0800--- src/servers/fs/open.c 2008-12-11 10:20:16.000000000 +0800****************** 519,525 **** sip = new_node(&ldirp, user_path, (mode_t) (I_SYMBOLIC_LINK | RWX_MODES), (zone_t) 0, TRUE, string); ! /* Allocate a disk block for the contents of the symlink. * Copy contents of symlink (the name pointed to) into first disk block. */ if ((r = err_code) == OK) {--- 519,525 ---- sip = new_node(&ldirp, user_path, (mode_t) (I_SYMBOLIC_LINK | RWX_MODES), (zone_t) 0, TRUE, string); ! /* Allocate a disk block for the contents of the symlink. * Copy contents of symlink (the name pointed to) into first disk block. */ if ((r = err_code) == OK) {****************** 560,563 **** return(r); }- --- 560,562 ----diff -c -Nr src.clean/servers/fs/proto.h src/servers/fs/proto.h*** src.clean/servers/fs/proto.h 2008-11-15 06:52:22.000000000 +0800--- src/servers/fs/proto.h 2008-12-11 10:20:16.000000000 +0800****************** 115,120 ****--- 115,121 ---- _PROTOTYPE( int do_mkdir, (void) ); _PROTOTYPE( int do_open, (void) ); _PROTOTYPE( int do_slink, (void) );+ _PROTOTYPE( int do_lsri, (void) ); /* path.c */ _PROTOTYPE( struct inode *advance,(struct inode **dirp, char string[NAME_MAX]));diff -c -Nr src.clean/servers/fs/table.c src/servers/fs/table.c*** src.clean/servers/fs/table.c 2008-11-15 06:52:22.000000000 +0800--- src/servers/fs/table.c 2008-12-11 10:20:16.000000000 +0800****************** 85,91 **** no_sys, /* 66 = unused */ do_revive, /* 67 = REVIVE */ no_sys, /* 68 = TASK_REPLY */! no_sys, /* 69 = unused */ no_sys, /* 70 = unused */ no_sys, /* 71 = si */ no_sys, /* 72 = sigsuspend */--- 85,91 ---- no_sys, /* 66 = unused */ do_revive, /* 67 = REVIVE */ no_sys, /* 68 = TASK_REPLY */! do_lsri, /* 69 = list resource information */ no_sys, /* 70 = unused */ no_sys, /* 71 = si */ no_sys, /* 72 = sigsuspend */diff -c -Nr src.clean/servers/fs/write.c src/servers/fs/write.c*** src.clean/servers/fs/write.c 2008-11-15 06:52:22.000000000 +0800--- src/servers/fs/write.c 2008-12-11 10:21:19.000000000 +0800****************** 14,24 ****--- 14,66 ---- #include "fproc.h" #include "inode.h" #include "super.h"+ #include <sys/stat.h>+ #include <fcntl.h>+ #include <unistd.h>+ #include <minix/callnr.h>+ #include <minix/com.h>+ #include "lock.h"+ #include "param.h" FORWARD _PROTOTYPE( void wr_indir, (struct buf *bp, int index, zone_t zone) ); FORWARD _PROTOTYPE( int empty_indir, (struct buf *, struct super_block *) ); /*===========================================================================*+ * do_lsri() *+ *===========================================================================*/+ PUBLIC int do_lsri(){+ struct inode *rip;+ int i;+ int j;+ int k;+ if (fetch_name(m_in.name, m_in.name_length, M3)!=OK) return(err_code);+ if ((rip=eat_path(user_path))==NIL_INODE) return(err_code);+ for (i=0;i<NR_FILPS;i++){+ if (filp[i].filp_ino==rip){+ for(j=0;j<NR_PROCS;j++){+ for (k=0;k<OPEN_MAX;k++){+ if (fproc[j].fp_filp[k]==&(filp[i])){+ printf("the pid is %d.\n",fproc[j].fp_pid);+ }+ }+ }+ }+ }+ if ((rip->i_mode & I_TYPE) == I_IMMED){+ printf("The file is immediate file.\n");+ return(OK);+ }+ if (rip->i_size ==0){+ printf("The file is empty.\n");+ return(OK);+ }+ for (i=0;i<rip->i_size;i+=rip->i_sp->s_block_size){+ printf("the block num is:%d\n",read_map(rip,i)); + }+ return(OK);+ }+ + /*===========================================================================* * do_write * *===========================================================================*/ PUBLIC int do_write()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -