Mercurial > hg > CbC > CbC_xv6
changeset 330:e34fb61f280a
remove static data gear declaration fs_impl
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 09 Feb 2020 19:08:50 +0900 |
parents | ee19f903218a |
children | e64c8734a802 |
files | src/gearsTools/update_implheader.pl src/impl/fs_impl.h |
diffstat | 2 files changed, 10 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/src/gearsTools/update_implheader.pl Sun Feb 09 14:54:21 2020 +0900 +++ b/src/gearsTools/update_implheader.pl Sun Feb 09 19:08:50 2020 +0900 @@ -87,14 +87,16 @@ sub update_header { my ($header_file,$write_codes) = @_; - open my $fh, '+<', $header_file; + open my $fh, '<', $header_file; my $def_impl = <$fh>; my ($impl, $interface); if ($def_impl =~ /typedef\s*struct\s*(\w+)\s*<[\w\s,]+>\s*impl\s*(\w+)\s*{/) { $impl = $1; $interface = $2; } - + close $fh; + open $fh, '>', $header_file; + print $fh "typedef struct $impl <Impl, Isa> impl $interface {\n"; map { print $fh " $_\n"} @$write_codes; print $fh " __code next(...);\n"; print $fh "} $impl;\n";
--- a/src/impl/fs_impl.h Sun Feb 09 14:54:21 2020 +0900 +++ b/src/impl/fs_impl.h Sun Feb 09 19:08:50 2020 +0900 @@ -1,47 +1,29 @@ -typedef struct fs_impl<Type, Isa> impl fs{ - union Data* fs_impl; - struct superblock* sb; - int ret; - uint dev; - short type; - struct buf* bp; - struct dinode* dip; - uint inum; - struct inode* dp; - char* name; - uint off; - uint* poff; - dirent* de; - uint tot; - uint m; - char* dst; - uint n; - char* src; - +typedef struct fs_impl <Impl, Isa> impl fs { __code allocinode(Type* fs_impl, uint dev, struct superblock* sb, __code next(...)); __code allocinode_loop(Type* fs_impl, uint inum, uint dev, short type, struct superblock* sb, struct buf* bp, struct dinode* dip, __code next(...)); __code allocinode_loopcheck(Type* fs_impl, uint inum, uint dev, struct superblock* sb, struct buf* bp, struct dinode* dip, __code next(...)); __code allocinode_noloop(Type* fs_impl, uint inum, uint dev, short type, struct superblock* sb, struct buf* bp, struct dinode* dip, __code next(int ret, ...)); - __code lockinode1(Type* fs_impl, struct inode *ip, struct buf *bp, struct dinode *dip, __code next(...)); + __code lockinode1(Type* fs_impl, struct inode* ip, struct buf* bp, struct dinode* dip, __code next(...)); __code lockinode2(Type* fs_impl, struct inode* ip, struct buf* bp, struct dinode* dip, __code next(...)); __code lockinode_sleepcheck(Type* fs_impl, struct inode* ip, __code next(...)); __code iput_check(Type* fs_impl, struct inode* ip, __code next(...)); __code iput_inode_nolink(Type* fs_impl, struct inode* ip, __code next(...)); - __code readi_check_diskinode(Type* fs_impl,struct inode* ip, char* dst, uint n, next(int ret, ...)); + __code readi_check_diskinode(Type* fs_impl,struct inode* ip, char* dst, uint n, __code next(int ret, ...)); __code readi_loopcheck(Type* fs_impl, uint tot, uint m, char* dst, uint off, uint n, __code next(...)); - __code readi_loop(Type* fs_impl, struct inode *ip, struct buf* bp, uint tot, uint m, char* dst, uint off, uint n, __code next(...)); + __code readi_loop(Type* fs_impl, struct inode* ip, struct buf* bp, uint tot, uint m, char* dst, uint off, uint n, __code next(...)); __code readi_noloop(Type* fs_impl, uint n, __code next(int ret, ...)); __code writei_check_diskinode(Type* fs_impl,struct inode* ip, char* src, uint n, __code next(int ret, ...)); __code writei_loopcheck(Type* fs_impl, uint tot, uint m, char* src, uint off, uint n, __code next(...)); __code writei_loop(Type* fs_impl, struct inode* ip, struct buf* bp, uint tot, uint m, char* src, uint off, uint n, __code next(...)); __code writei_noloop(Type* fs_impl, struct inode* ip, uint n, uint off, __code next(int ret, ...)); - __code dirlookup_loopcheck(Type* fs_impl, struct inode* dp, char* name, uint off, uint* poff, dirent* de, next(...)); + __code dirlookup_loopcheck(Type* fs_impl, struct inode* dp, char* name, uint off, uint* poff, dirent* de, __code next(...)); __code dirlookup_loop(Type* fs_impl, struct inode* dp, char* name, uint off, uint inum, uint* poff, dirent* de, __code next(int ret, ...)); __code dirlookup_noloop(Type* fs_impl, __code next(int ret, ...)); __code dirlink_namecheck(Type* fs_impl, struct inode* ip, __code next(int ret, ...)); __code dirlink_loopcheck(Type* fs_impl, struct dirent* de, struct inode* dp, uint off, __code next(...)); __code dirlink_loop(Type* fs_impl, struct dirent* de, struct inode* dp, uint off, uint inum, __code next(...)); __code dirlink_noloop(Type* fs_impl, struct dirent* de, struct inode* dp, uint off, uint inum, char* name, __code next(int ret, ...)); + __code next(...); __code next2(...); } fs_impl;