aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-08-23 12:46:59 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-08-23 12:46:59 +0000
commit77aac6dc1b94bb2ed0dd7a0c1c9a00aac3a2c10e (patch)
tree0e0c278fd962be80c4902e96c48a30b1c961b60b
parent74326e49e509c1b93d437cf834d394667671498f (diff)
use malloc() rather than getbytes(); use pthread_exit();
svn path=/trunk/externals/iem/iemnet/; revision=13888
-rw-r--r--iemnet.c4
-rw-r--r--iemnet_data.c53
-rw-r--r--iemnet_receiver.c6
-rw-r--r--iemnet_sender.c5
-rw-r--r--udpserver.c11
5 files changed, 32 insertions, 47 deletions
diff --git a/iemnet.c b/iemnet.c
index 8e95384..fb97a61 100644
--- a/iemnet.c
+++ b/iemnet.c
@@ -5,7 +5,7 @@
//#define DEBUG
#include "iemnet.h"
-
+#include <stdlib.h>
void iemnet__addrout(t_outlet*status_outlet, t_outlet*address_outlet,
long address, unsigned short port) {
@@ -76,7 +76,7 @@ static int iemnet__nametaken(const char*namestring) {
}
// new name!
- curname=(t_iemnet_names*)getbytes(sizeof(t_iemnet_names));
+ curname=(t_iemnet_names*)malloc(sizeof(t_iemnet_names));
curname->name=name;
curname->next=0;
diff --git a/iemnet_data.c b/iemnet_data.c
index e671d7d..7ccc5b0 100644
--- a/iemnet_data.c
+++ b/iemnet_data.c
@@ -11,6 +11,8 @@
#include "iemnet.h"
#include "iemnet_data.h"
+#include <stdlib.h>
+
#include <string.h>
#include <stdio.h>
@@ -36,19 +38,19 @@ t_iemnet_floatlist*iemnet__floatlist_init(t_iemnet_floatlist*cl) {
void iemnet__floatlist_destroy(t_iemnet_floatlist*cl) {
if(NULL==cl)return;
- if(cl->argv) freebytes(cl->argv, sizeof(t_atom)*cl->size);
+ if(cl->argv) free(cl->argv);
cl->argv=NULL;
cl->argc=0;
cl->size=0;
- freebytes(cl, sizeof(t_iemnet_floatlist));
+ free(cl);
}
t_iemnet_floatlist*iemnet__floatlist_create(unsigned int size) {
- t_iemnet_floatlist*result=(t_iemnet_floatlist*)getbytes(sizeof(t_iemnet_floatlist));
+ t_iemnet_floatlist*result=(t_iemnet_floatlist*)malloc(sizeof(t_iemnet_floatlist));
if(NULL==result)return NULL;
- result->argv = (t_atom*)getbytes(size*sizeof(t_atom));
+ result->argv = (t_atom*)malloc(size*sizeof(t_atom));
if(NULL==result->argv) {
iemnet__floatlist_destroy(result);
return NULL;
@@ -73,10 +75,10 @@ t_iemnet_floatlist*iemnet__floatlist_resize(t_iemnet_floatlist*cl, unsigned int
return cl;
}
- tmp=(t_atom*)getbytes(size*sizeof(t_atom));
+ tmp=(t_atom*)malloc(size*sizeof(t_atom));
if(NULL==tmp) return NULL;
- freebytes(cl->argv, sizeof(t_atom)*cl->size);
+ free(cl->argv);
cl->argv=tmp;
cl->argc=cl->size=size;
@@ -89,19 +91,19 @@ t_iemnet_floatlist*iemnet__floatlist_resize(t_iemnet_floatlist*cl, unsigned int
void iemnet__chunk_destroy(t_iemnet_chunk*c) {
if(NULL==c)return;
- if(c->data)freebytes(c->data, c->size*sizeof(unsigned char));
+ if(c->data)free(c->data);
c->data=NULL;
c->size=0;
- freebytes(c, sizeof(t_iemnet_chunk));
+ free(c);
}
t_iemnet_chunk* iemnet__chunk_create_empty(int size) {
- t_iemnet_chunk*result=(t_iemnet_chunk*)getbytes(sizeof(t_iemnet_chunk));
+ t_iemnet_chunk*result=(t_iemnet_chunk*)malloc(sizeof(t_iemnet_chunk));
if(result) {
result->size=size;
- result->data=(unsigned char*)getbytes(sizeof(unsigned char)*size);
+ result->data=(unsigned char*)malloc(sizeof(unsigned char)*size);
if(NULL == result->data) {
result->size=0;
@@ -220,7 +222,7 @@ int queue_push(
if(NULL == data) return size;
- n=(t_node*)getbytes(sizeof(t_node));
+ n=(t_node*)malloc(sizeof(t_node));
n->next = 0;
n->data = data;
@@ -258,7 +260,6 @@ t_iemnet_chunk* queue_pop_block(
if(NULL == _this)return NULL;
pthread_mutex_lock(&_this->mtx);
-#if 1
/* if the queue is empty, wait */
if(NULL == _this->head) {
@@ -283,30 +284,10 @@ t_iemnet_chunk* queue_pop_block(
}
pthread_mutex_unlock(&_this->mtx);
-#else
- /* wait until there is something in the queue or the "done" flag is set */
- while (! (head = _this->head)) {
- if(_this->done) {
- pthread_mutex_unlock(&_this->mtx);
- return NULL;
- } else {
- pthread_cond_wait(&_this->cond, &_this->mtx);
- }
- }
-
- if (! (_this->head = head->next)) {
- _this->tail = 0;
- }
- if(head && head->data) {
- _this->size-=head->data->size;
- }
-
- pthread_mutex_unlock(&_this->mtx);
-#endif
if(head) {
data=head->data;
- freebytes(head, sizeof(t_node));
+ free(head);
head=NULL;
}
return data;
@@ -340,7 +321,7 @@ t_iemnet_chunk* queue_pop_noblock(
if(head) {
data=head->data;
- freebytes(head, sizeof(t_node));
+ free(head);
head=NULL;
}
return data;
@@ -391,7 +372,7 @@ void queue_destroy(t_iemnet_queue* q) {
pthread_mutex_destroy(&q->mtx);
pthread_cond_destroy(&q->cond);
- freebytes(q, sizeof(t_iemnet_queue));
+ free(q);
q=NULL;
DEBUG("queue destroyed %x", q);
}
@@ -400,7 +381,7 @@ t_iemnet_queue* queue_create(void) {
static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
- t_iemnet_queue*q=(t_iemnet_queue*)getbytes(sizeof(t_iemnet_queue));
+ t_iemnet_queue*q=(t_iemnet_queue*)malloc(sizeof(t_iemnet_queue));
DEBUG("queue create %x", q);
if(NULL==q)return NULL;
diff --git a/iemnet_receiver.c b/iemnet_receiver.c
index 3121e32..3a7ba41 100644
--- a/iemnet_receiver.c
+++ b/iemnet_receiver.c
@@ -9,6 +9,7 @@
#include <string.h>
#include <stdio.h>
+#include <stdlib.h>
#include <errno.h>
#include <pthread.h>
@@ -89,6 +90,7 @@ static void*iemnet__receiver_readthread(void*arg) {
receiver->running=0;
//fprintf(stderr, "read thread terminated\n");
+ pthread_exit(NULL);
return NULL;
}
@@ -129,7 +131,7 @@ int iemnet__receiver_getsize(t_iemnet_receiver*x) {
t_iemnet_receiver*iemnet__receiver_create(int sock, void*userdata, t_iemnet_receivecallback callback) {
static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
- t_iemnet_receiver*rec=(t_iemnet_receiver*)getbytes(sizeof(t_iemnet_receiver));
+ t_iemnet_receiver*rec=(t_iemnet_receiver*)malloc(sizeof(t_iemnet_receiver));
DEBUG("create new receiver for 0x%X:%d", userdata, sock);
//fprintf(stderr, "new receiver for %d\t%x\t%x\n", sock, userdata, callback);
if(rec) {
@@ -203,7 +205,7 @@ void iemnet__receiver_destroy(t_iemnet_receiver*rec) {
rec->callback=NULL;
rec->queue=NULL;
- freebytes(rec, sizeof(t_iemnet_receiver));
+ free(rec);
rec=NULL;
DEBUG("[%d] destroyed receiver", inst);
}
diff --git a/iemnet_sender.c b/iemnet_sender.c
index bdbc26d..ef2b70a 100644
--- a/iemnet_sender.c
+++ b/iemnet_sender.c
@@ -15,6 +15,7 @@
#include <string.h>
#include <stdio.h>
+#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
@@ -159,7 +160,7 @@ void iemnet__sender_destroy(t_iemnet_sender*s) {
pthread_mutex_destroy (&s->mtx);
memset(s, 0, sizeof(t_iemnet_sender));
- freebytes(s, sizeof(t_iemnet_sender));
+ free(s);
s=NULL;
DEBUG("destroyed sender");
}
@@ -167,7 +168,7 @@ void iemnet__sender_destroy(t_iemnet_sender*s) {
t_iemnet_sender*iemnet__sender_create(int sock) {
static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
- t_iemnet_sender*result=(t_iemnet_sender*)getbytes(sizeof(t_iemnet_sender));
+ t_iemnet_sender*result=(t_iemnet_sender*)malloc(sizeof(t_iemnet_sender));
int res=0;
DEBUG("create sender %x", result);
if(NULL==result){
diff --git a/udpserver.c b/udpserver.c
index 95324d0..4bf6dee 100644
--- a/udpserver.c
+++ b/udpserver.c
@@ -27,6 +27,7 @@
//#define DEBUG
#include "iemnet.h"
#include <stdio.h>
+#include <stdlib.h>
#define MAX_CONNECT 32 /* maximum number of connections */
@@ -69,7 +70,7 @@ typedef struct _udpserver
static t_udpserver_sender *udpserver_sender_new(t_udpserver *owner, unsigned long host, unsigned short port)
{
- t_udpserver_sender *x = (t_udpserver_sender *)getbytes(sizeof(*x));
+ t_udpserver_sender *x = (t_udpserver_sender *)malloc(sizeof(t_udpserver_sender));
if(NULL==x) {
error("%s_sender: unable to allocate %d bytes", objName, sizeof(*x));
return NULL;
@@ -100,7 +101,7 @@ static void udpserver_sender_free(t_udpserver_sender *x)
x->sr_fd=-1;
- freebytes(x, sizeof(*x));
+ free(x);
if(sender) iemnet__sender_destroy(sender);
@@ -551,7 +552,7 @@ static void udpserver_receive_callback(void *y, t_iemnet_chunk*c) {
/* here we might have a reentrancy problem */
if(conns!=x->x_nconnections) {
- outlet_float(x->x_connectout, x->x_nconnections);
+ outlet_float(x->x_connectout, x->x_nconnections);
}
outlet_list(x->x_msgout, gensym("list"), x->x_floatlist->argc, x->x_floatlist->argv);
}
@@ -612,7 +613,7 @@ static void udpserver_port(t_udpserver*x, t_floatarg fportno)
/* cleanup any open ports */
if(sockfd>=0) {
- sys_rmpollfn(sockfd);
+ //sys_rmpollfn(sockfd);
sys_closesocket(sockfd);
x->x_connectsocket=-1;
x->x_port=-1;
@@ -702,7 +703,7 @@ static void udpserver_free(t_udpserver *x)
}
if (x->x_connectsocket >= 0)
{
- sys_rmpollfn(x->x_connectsocket);
+ //sys_rmpollfn(x->x_connectsocket);
sys_closesocket(x->x_connectsocket);
}
if(x->x_floatlist)iemnet__floatlist_destroy(x->x_floatlist);x->x_floatlist=NULL;