# HG changeset patch # User anatofuz # Date 1581242930 -32400 # Node ID e34fb61f280a3b07b2970f05707c122a68a71fb4 # Parent ee19f903218a509d26844f9047ead5163958f587 remove static data gear declaration fs_impl diff -r ee19f903218a -r e34fb61f280a src/gearsTools/update_implheader.pl --- 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 $interface {\n"; map { print $fh " $_\n"} @$write_codes; print $fh " __code next(...);\n"; print $fh "} $impl;\n"; diff -r ee19f903218a -r e34fb61f280a src/impl/fs_impl.h --- 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 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 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;