diff options
author | kcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-03-19 21:02:07 +0800 |
---|---|---|
committer | kcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-03-19 21:02:07 +0800 |
commit | d0b2404d6d0b0935512cad1da370577a05493b0c (patch) | |
tree | 6104f33d64c6e68aaca73da8a551d52985c6e12d | |
parent | c8b05dac46a8c39cbdf2ac80e7dbb18077e157cb (diff) | |
download | pttbbs-d0b2404d6d0b0935512cad1da370577a05493b0c.tar pttbbs-d0b2404d6d0b0935512cad1da370577a05493b0c.tar.gz pttbbs-d0b2404d6d0b0935512cad1da370577a05493b0c.tar.bz2 pttbbs-d0b2404d6d0b0935512cad1da370577a05493b0c.tar.lz pttbbs-d0b2404d6d0b0935512cad1da370577a05493b0c.tar.xz pttbbs-d0b2404d6d0b0935512cad1da370577a05493b0c.tar.zst pttbbs-d0b2404d6d0b0935512cad1da370577a05493b0c.zip |
test if SHM->gap are all zero
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2646 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r-- | util/shmctl.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/util/shmctl.c b/util/shmctl.c index c4cb6870..cdecb408 100644 --- a/util/shmctl.c +++ b/util/shmctl.c @@ -864,6 +864,47 @@ int rlfcache(int argc, char **argv) return 0; } +int iszero(void *addr, int size) +{ + char *a=(char*)addr; + int i; + for(i=0;i<size;i++) + if(a[i]!=0) return 0; + return 1; +} + +#define TESTZERO(x,i) do { if(!iszero((x), sizeof(x))) printf("%s is dirty(i=%d)\n",#x,i); } while(0); +int testgap(int argc, char *argv[]) +{ + int i; + TESTZERO(SHM->gap_1,0); + TESTZERO(SHM->gap_2,0); + TESTZERO(SHM->gap_3,0); + TESTZERO(SHM->gap_4,0); + TESTZERO(SHM->gap_5,0); + TESTZERO(SHM->gap_6,0); + TESTZERO(SHM->gap_7,0); + TESTZERO(SHM->gap_8,0); + TESTZERO(SHM->gap_9,0); + TESTZERO(SHM->gap_10,0); + TESTZERO(SHM->gap_11,0); + TESTZERO(SHM->gap_12,0); + TESTZERO(SHM->gap_13,0); + TESTZERO(SHM->gap_14,0); + TESTZERO(SHM->gap_15,0); + TESTZERO(SHM->gap_16,0); + TESTZERO(SHM->gap_17,0); + TESTZERO(SHM->gap_18,0); + TESTZERO(SHM->gap_19,0); + for(i=0; i<USHM_SIZE; i++) { + TESTZERO(SHM->uinfo[i].gap_1,i); + TESTZERO(SHM->uinfo[i].gap_2,i); + TESTZERO(SHM->uinfo[i].gap_3,i); + TESTZERO(SHM->uinfo[i].gap_4,i); + } + return 0; +} + struct { int (*func)(int, char **); char *cmd, *descript; @@ -890,6 +931,7 @@ struct { {usermode, "usermode", "list #users in the same mode"}, {torb, "reloadbcache", "reload bcache"}, {rlfcache, "reloadfcache", "reload fcache"}, + {testgap, "testgap", "test gap"}, {NULL, NULL, NULL} }; extern char ** environ; |