Projects
Browse Source     Search     Timeline     Wiki

Changeset 23153

Show
Ignore:
Timestamp:
03/19/07 10:49:43 (21 months ago)
Author:
zarzycki@…
Message:

Unaligned access can slow down the machine.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/launchd/src/liblaunch.c

    r23131 r23153  
    575575} 
    576576 
     577#define ROUND_TO_64BIT_WORD_SIZE(x)     ((x + 7) & ~7) 
     578 
    577579void 
    578580launch_data_pack(launch_data_t d, void **where, size_t *len, int **fd_where, size_t *fdcnt) 
     
    614616                *where = realloc(*where, *len + strlen(d->string) + 1); 
    615617                memcpy(*where + *len, d->string, strlen(d->string) + 1); 
    616                 *len += strlen(d->string) + 1; 
     618                *len += ROUND_TO_64BIT_WORD_SIZE(strlen(d->string) + 1); 
    617619                break; 
    618620        case LAUNCH_DATA_OPAQUE: 
     
    620622                *where = realloc(*where, *len + d->opaque_size); 
    621623                memcpy(*where + *len, d->opaque, d->opaque_size); 
    622                 *len += d->opaque_size; 
     624                *len += ROUND_TO_64BIT_WORD_SIZE(d->opaque_size); 
    623625                break; 
    624626        case LAUNCH_DATA_DICTIONARY: 
     
    672674                r->string = conn->recvbuf + *data_offset; 
    673675                r->string_len = tmpcnt; 
    674                 *data_offset += tmpcnt + 1; 
     676                *data_offset += ROUND_TO_64BIT_WORD_SIZE(tmpcnt + 1); 
    675677                break; 
    676678        case LAUNCH_DATA_OPAQUE: 
     
    682684                r->opaque = conn->recvbuf + *data_offset; 
    683685                r->opaque_size = tmpcnt; 
    684                 *data_offset += tmpcnt; 
     686                *data_offset += ROUND_TO_64BIT_WORD_SIZE(tmpcnt); 
    685687                break; 
    686688        case LAUNCH_DATA_FD: