summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorkcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-03-19 21:02:07 +0800
committerkcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-03-19 21:02:07 +0800
commitd0b2404d6d0b0935512cad1da370577a05493b0c (patch)
tree6104f33d64c6e68aaca73da8a551d52985c6e12d /util
parentc8b05dac46a8c39cbdf2ac80e7dbb18077e157cb (diff)
downloadpttbbs-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
Diffstat (limited to 'util')
-rw-r--r--util/shmctl.c42
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;