⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lsri.patch

📁 MINIX操作系统的内核修改补丁
💻 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 + -