Changeset 44

Show
Ignore:
Timestamp:
06/30/08 11:15:23 (3 months ago)
Author:
jtang
Message:

Merged no-calloc() patch; updated Makefiles.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libsipc/src/Makefile

    r30 r44  
    44TARGET=libsipc.so 
    55SONAME=$(TARGET).$(SOVERSION) 
    6 LIBSO=$(TARGET).$(SOVERSION).$(RELEASE) 
     6LIBSO=$(TARGET).$(SOVERSION) 
     7RELEASESO=$(LIBSO).$(RELEASE) 
    78 
    89TOP_SRCDIR ?= .. 
     
    1112OBJS=$(patsubst %.c,%.o,$(wildcard *.c)) 
    1213 
    13 all: $(LIBSO) 
     14all: $(RELEASESO) 
    1415 
    15 $(LIBSO): $(OBJS) 
     16$(RELEASESO): $(OBJS) 
    1617        $(CC) $(LDFLAGS) -shared -o $@ $^ -Wl,-soname,$(SONAME),--version-script=libsipc.map,-z,defs $(LIBDIRS) 
     18        ln -sf $@ $(LIBSO) 
    1719        ln -sf $@ $(TARGET) 
    1820 
     
    2022        $(CC) $(AM_CFLAGS) $(CFLAGS) $(INCLUDEDIRS) -c -o $@ $< 
    2123 
    22 install: $(LIBSO) 
     24install: $(RELEASESO) 
    2325        test -d $(DESTDIR)/$(LIBDIR) || install -m 755 -d $(DESTDIR)/$(LIBDIR) 
    24         install -m 644 $(LIBSO) $(DESTDIR)/$(LIBDIR) 
    25         cd $(DESTDIR)/$(LIBDIR) && ln -sf $(LIBSO) $(TARGET) 
    26         cd $(DESTDIR)/$(LIBDIR) && ln -sf $(LIBSO) $(TARGET).$(SOVERSION
     26        install -m 644 $(RELEASESO) $(DESTDIR)/$(LIBDIR) 
     27        cd $(DESTDIR)/$(LIBDIR) && ln -sf $(RELEASESO) $(TARGET) 
     28        cd $(DESTDIR)/$(LIBDIR) && ln -sf $(RELEASESO) $(LIBSO
    2729 
    2830clean: 
    29         -rm -f $(OBJS) $(LIBSO) $(TARGET) 
     31        -rm -f $(OBJS) $(RELEASESO) $(LIBSO) $(TARGET) 
    3032 
    3133.PHONY: all install clean 
  • trunk/libsipc/src/libsipc.map

    r21 r44  
    1 
     1VERS_1.0
    22  global: 
    33        sipc_open; 
  • trunk/libsipc/src/sipc_internal.h

    r41 r44  
    8989 
    9090        char *data; 
     91        struct msgbuf *mbuf; 
    9192        size_t len; 
    9293        size_t msg_len;                /* Length in bytes of the next message */ 
  • trunk/libsipc/src/sipc_mqueue.c

    r41 r44  
    2929#include <sys/stat.h> 
    3030#include <fcntl.h> 
     31#include <assert.h> 
    3132#include "sipc_internal.h" 
    3233#include "sipc_mqueue.h" 
     
    6768        sipc->funcs = &mqueue_funcs; 
    6869        sipc->data = NULL; 
     70        sipc->mbuf = NULL; 
    6971 
    7072        /* Determine maximum size of a message from proc */ 
     
    9799        free(sipc->data); 
    98100        sipc->data = NULL; 
     101        free(sipc->mbuf); 
     102        sipc->mbuf = NULL; 
    99103} 
    100104 
     
    105109        sipc->data = calloc(1, sipc->len); 
    106110        if (!sipc->data) { 
     111                sipc_error(sipc, "Out of memory\n"); 
     112                return -1; 
     113        } 
     114 
     115        /* Allocate message buffer */ 
     116        sipc->mbuf = (struct msgbuf *)calloc(1, SIPC_MQUEUE_MSG_SZ); 
     117        if (!sipc->mbuf) { 
    107118                sipc_error(sipc, "Out of memory\n"); 
    108119                return -1; 
     
    114125                free(sipc->data); 
    115126                sipc->data = NULL; 
     127                free(sipc->mbuf); 
     128                sipc->mbuf = NULL; 
    116129                return -1; 
    117130        } 
     
    132145        size_t packet_sz; 
    133146        char *packet = NULL; 
    134         struct msgbuf *mbuf = NULL; 
    135  
     147 
     148        if (!sipc) 
     149                goto err; 
    136150        if (sipc->role != SIPC_SENDER) 
    137151                goto err; 
    138152 
    139         mbuf = (struct msgbuf *)calloc(1, SIPC_MQUEUE_MSG_SZ); 
    140         if (!mbuf) { 
    141                 sipc_error(sipc, "%s\n", "Out of memory"); 
    142                 goto err; 
    143         } 
    144  
     153        struct msgbuf *mbuf = sipc->mbuf; 
     154        assert(mbuf); 
     155        memset(mbuf, 0, SIPC_MQUEUE_MSG_SZ); 
    145156        sipc->msg_len = msg_len; 
    146157        mqueue_send_msg_len(sipc, msg_len); 
     
    170181        mqueue_send_end_xmit(sipc); 
    171182        sipc->msg_len = SIPC_MSGLEN_NOT_SET; 
    172         free(mbuf); 
    173183        return 0; 
    174184 
    175185      err: 
    176186        free(packet); 
    177         free(mbuf); 
    178187        sipc->msg_len = SIPC_MSGLEN_NOT_SET; 
    179188        return -1; 
     
    184193        int retv = -1, alloc_sz = 0, idx = 0, recv_sz; 
    185194        int msgtxt_sz = SIPC_MQUEUE_MSG_SZ - sizeof(struct msgbuf); 
    186         struct msgbuf *mbuf = NULL; 
    187195 
    188196        if (!sipc || !data || !len) 
     
    198206        } 
    199207 
    200         mbuf = calloc(1, SIPC_MQUEUE_MSG_SZ); 
    201         if (!mbuf) { 
    202                 sipc_error(sipc, "Out of memory\n"); 
    203                 goto err; 
    204         } 
     208        struct msgbuf *mbuf = sipc->mbuf; 
     209        assert(mbuf); 
     210        memset(mbuf, 0, SIPC_MQUEUE_MSG_SZ); 
    205211 
    206212        /* Receive and validate the length of message marker */ 
     
    272278      err: 
    273279        sipc->msg_len = SIPC_MSGLEN_NOT_SET;    /* Unset message length */ 
    274         free(mbuf); 
    275280        return retv; 
    276281} 
  • trunk/libsipc/tests/Makefile

    r33 r44  
    11TESTS = test_ipc ipc_creator ipc_destroyer 
    2 AM_LDFLAGS = -lsipc -lcunit -Wl,-rpath,$(LIBDIRS) 
     2AM_CFLAGS = -I../include 
     3AM_LDFLAGS = -lsipc -lcunit -Wl,-rpath=$(TOP_BUILDDIR)/src -L$(TOP_BUILDDIR)/src 
     4TOP_BUILDDIR := $(shell pwd)/.. 
    35 
    46all: