Large memory support

Jason Titus jtitus@postini.com
Fri, 20 Feb 2004 09:29:21 -0800


No problem.  Not sure if every one of the variables needed to be changed =
(or that I got all of them), but it seemed like they were all the ones =
that would hold memory size in them.

Jason

------------

Common subdirectories: memcached-1.1.10/doc and =
memcached-bigmem-1.1.10/doc
Only in memcached-bigmem-1.1.10/: Makefile
diff -u memcached-1.1.10/memcached.c memcached-bigmem-1.1.10/memcached.c
--- memcached-1.1.10/memcached.c        2003-12-04 09:50:57.000000000 =
-0800
+++ memcached-bigmem-1.1.10/memcached.c 2004-02-18 23:27:39.000000000 =
-0800
@@ -336,7 +336,7 @@
         pos +=3D sprintf(pos, "STAT get_misses %u\r\n", =
stats.get_misses);
         pos +=3D sprintf(pos, "STAT bytes_read %llu\r\n", =
stats.bytes_read);
         pos +=3D sprintf(pos, "STAT bytes_written %llu\r\n", =
stats.bytes_written);
-        pos +=3D sprintf(pos, "STAT limit_maxbytes %u\r\n", =
settings.maxbytes);
+        pos +=3D sprintf(pos, "STAT limit_maxbytes %llu\r\n", =
settings.maxbytes);
         pos +=3D sprintf(pos, "END");
         out_string(c, temp);
         return;
@@ -1279,7 +1279,7 @@
             settings.port =3D atoi(optarg);
             break;
         case 'm':
-            settings.maxbytes =3D atoi(optarg)*1024*1024;
+            settings.maxbytes =3D (size_t) atoi(optarg)* (size_t) 1024* =
(size_t) 1024;
             break;
         case 'c':
             settings.maxconns =3D atoi(optarg);
diff -u memcached-1.1.10/memcached.h memcached-bigmem-1.1.10/memcached.h
--- memcached-1.1.10/memcached.h        2003-12-04 09:50:57.000000000 =
-0800
+++ memcached-bigmem-1.1.10/memcached.h 2004-02-18 23:11:28.000000000 =
-0800
@@ -10,7 +10,7 @@
 struct stats {
     unsigned int  curr_items;
     unsigned int  total_items;
-    unsigned long long  curr_bytes;
+    size_t  curr_bytes;
     unsigned int  curr_conns;
     unsigned int  total_conns;
     unsigned int  conn_structs;
@@ -24,7 +24,7 @@
 };
=20
 struct settings {
-    unsigned int maxbytes;
+    size_t maxbytes;
     int maxconns;
     int port;
     struct in_addr interface;
@@ -147,17 +147,17 @@
 /* slabs memory allocation */
=20
 /* Init the subsystem. The argument is the limit on no. of bytes to =
allocate, 0 if no limit */
-void slabs_init(unsigned int limit);
+void slabs_init(size_t limit);
=20
 /* Given object size, return id to use when allocating/freeing memory =
for object */
 /* 0 means error: can't store such a large object */
-unsigned int slabs_clsid(unsigned int size);
+unsigned int slabs_clsid(size_t size);
=20
 /* Allocate object of given length. 0 on error */
-void *slabs_alloc(unsigned int size);
+void *slabs_alloc(size_t size);
=20
 /* Free previously allocated object */
-void slabs_free(void *ptr, unsigned int size);
+void slabs_free(void *ptr, size_t size);
    =20
 /* Fill buffer with stats */
 char* slabs_stats(int *buflen);
Common subdirectories: memcached-1.1.10/scripts and =
memcached-bigmem-1.1.10/scripts
diff -u memcached-1.1.10/slabs.c memcached-bigmem-1.1.10/slabs.c
--- memcached-1.1.10/slabs.c    2003-09-05 15:37:36.000000000 -0700
+++ memcached-bigmem-1.1.10/slabs.c     2004-02-18 23:08:52.000000000 =
-0800
@@ -49,10 +49,10 @@
 } slabclass_t;
=20
 static slabclass_t slabclass[POWER_LARGEST+1];
-static unsigned int mem_limit =3D 0;
-static unsigned int mem_malloced =3D 0;
+static size_t mem_limit =3D 0;
+static size_t mem_malloced =3D 0;
=20
-unsigned int slabs_clsid(unsigned int size) {
+unsigned int slabs_clsid(size_t size) {
     int res =3D 1;
=20
     if(size=3D=3D0)
@@ -67,7 +67,7 @@
     return res;
 }
=20
-void slabs_init(unsigned int limit) {
+void slabs_init(size_t limit) {
     int i;
     int size=3D1;
=20
@@ -88,7 +88,7 @@
 static int grow_slab_list (unsigned int id) {=20
     slabclass_t *p =3D &slabclass[id];
     if (p->slabs =3D=3D p->list_size) {
-        unsigned int new_size =3D  p->list_size ? p->list_size * 2 : =
16;
+        size_t new_size =3D  p->list_size ? p->list_size * 2 : 16;
         void *new_list =3D realloc(p->slab_list, =
new_size*sizeof(void*));
         if (new_list =3D=3D 0) return 0;
         p->list_size =3D new_size;
@@ -120,7 +120,7 @@
     return 1;
 }
=20
-void *slabs_alloc(unsigned int size) {
+void *slabs_alloc(size_t size) {
     slabclass_t *p;
=20
     unsigned char id =3D slabs_clsid(size);
@@ -160,7 +160,7 @@
     return 0;  /* shouldn't ever get here */
 }
=20
-void slabs_free(void *ptr, unsigned int size) {
+void slabs_free(void *ptr, size_t size) {
     unsigned char id =3D slabs_clsid(size);
     slabclass_t *p;
=20
Only in memcached-bigmem-1.1.10/: stamp-h