You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rj...@apache.org on 2011/01/17 23:03:45 UTC

svn commit: r1060108 - in /httpd/httpd/trunk: CHANGES modules/slotmem/mod_slotmem_shm.c

Author: rjung
Date: Mon Jan 17 22:03:45 2011
New Revision: 1060108

URL: http://svn.apache.org/viewvc?rev=1060108&view=rev
Log:
Increase memory alignment for slotmem data in
mod_slotmem_shm.

Consumers still need to choose the slot sizes
appropriate for consistent alignment.
mod_slotmem_shm only cares about the alignment
for the first slot.

We use the APR default alignment.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1060108&r1=1060107&r2=1060108&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Mon Jan 17 22:03:45 2011
@@ -2,6 +2,9 @@
 
 Changes with Apache 2.3.11
 
+  *) mod_slotmem_shm: Increase memory alignment for slotmem data.
+     [Rainer Jung]
+
   *) mod_ssl: Add config options for OCSP: SSLOCSPResponderTimeout,
      SSLOCSPResponseMaxAge, SSLOCSPResponseTimeSkew.  
      [Kaspar Brand <httpd-dev.2011 velox.ch>]

Modified: httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c?rev=1060108&r1=1060107&r2=1060108&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c (original)
+++ httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c Mon Jan 17 22:03:45 2011
@@ -51,6 +51,8 @@ typedef struct {
     ap_slotmem_type_t type;      /* type-specific flags */
 } sharedslotdesc_t;
 
+#define AP_SLOTMEM_OFFSET (APR_ALIGN_DEFAULT(sizeof(sharedslotdesc_t)))
+
 struct ap_slotmem_instance_t {
     char                 *name;       /* per segment name */
     void                 *shm;        /* ptr to memory segment (apr_shm_t *) */
@@ -253,7 +255,7 @@ static apr_status_t slotmem_create(ap_sl
     const char *fname;
     apr_shm_t *shm;
     apr_size_t basesize = (item_size * item_num);
-    apr_size_t size = sizeof(sharedslotdesc_t) +
+    apr_size_t size = AP_SLOTMEM_OFFSET +
                       (item_num * sizeof(char)) + basesize;
     apr_status_t rv;
 
@@ -305,10 +307,10 @@ static apr_status_t slotmem_create(ap_sl
             apr_shm_detach(shm);
             return APR_EINVAL;
         }
-        ptr = ptr + sizeof(desc);
+        ptr = ptr + AP_SLOTMEM_OFFSET;
     }
     else {
-        apr_size_t dsize = size - sizeof(sharedslotdesc_t);
+        apr_size_t dsize = size - AP_SLOTMEM_OFFSET;
         if (name && name[0] != ':') {
             apr_shm_remove(fname, gpool);
             rv = apr_shm_create(&shm, size, fname, gpool);
@@ -333,7 +335,7 @@ static apr_status_t slotmem_create(ap_sl
         desc.num = item_num;
         desc.type = type;
         memcpy(ptr, &desc, sizeof(desc));
-        ptr = ptr + sizeof(desc);
+        ptr = ptr + AP_SLOTMEM_OFFSET;
         memset(ptr, 0, dsize);
         /*
          * TODO: Error check the below... What error makes
@@ -418,7 +420,7 @@ static apr_status_t slotmem_attach(ap_sl
     /* Read the description of the slotmem */
     ptr = apr_shm_baseaddr_get(shm);
     memcpy(&desc, ptr, sizeof(desc));
-    ptr = ptr + sizeof(desc);
+    ptr = ptr + AP_SLOTMEM_OFFSET;
 
     /* For the chained slotmem stuff */
     res = (ap_slotmem_instance_t *) apr_pcalloc(gpool,