- HAL: some changes to linux and BSD hal implementations

pull/147/head
Michael Zillgith 7 years ago
parent 0e7fcb0c29
commit 47f540a4f9

@ -428,8 +428,12 @@ Socket_write(Socket self, uint8_t* buf, int size)
if (self->fd == -1) if (self->fd == -1)
return -1; return -1;
// MSG_NOSIGNAL - prevent send to signal SIGPIPE when peer unexpectedly closed the socket int retVal = send(self->fd, buf, size, 0);
return send(self->fd, buf, size, 0);
if ((retVal == -1) && (errno == EAGAIN))
return 0;
else
return retVal;
} }
void void

@ -475,8 +475,13 @@ Socket_write(Socket self, uint8_t* buf, int size)
if (self->fd == -1) if (self->fd == -1)
return -1; return -1;
// MSG_NOSIGNAL - prevent send to signal SIGPIPE when peer unexpectedly closed the socket /* MSG_NOSIGNAL - prevent send to signal SIGPIPE when peer unexpectedly closed the socket */
return send(self->fd, buf, size, MSG_NOSIGNAL); int retVal = send(self->fd, buf, size, MSG_NOSIGNAL);
if ((retVal == -1) && (errno == EAGAIN))
return 0;
else
return retVal;
} }
void void

@ -25,10 +25,11 @@
#include <semaphore.h> #include <semaphore.h>
#include <unistd.h> #include <unistd.h>
#include "hal_thread.h" #include "hal_thread.h"
#include "libiec61850_platform_includes.h"
#include "lib_memory.h" #include "lib_memory.h"
struct sThread { struct sThread
{
ThreadExecutionFunction function; ThreadExecutionFunction function;
void* parameter; void* parameter;
pthread_t pthread; pthread_t pthread;
@ -39,9 +40,9 @@ struct sThread {
Semaphore Semaphore
Semaphore_create(int initialValue) Semaphore_create(int initialValue)
{ {
char tmpname[] = {"/tmp/libiec61850.XXXXXX"}; Semaphore self = GLOBAL_MALLOC(sizeof(sem_t));
mktemp(tmpname);
Semaphore self = sem_open(tmpname, O_CREAT, 0666, initialValue); sem_init((sem_t*) self, 0, initialValue);
return self; return self;
} }

Loading…
Cancel
Save