ftp.nice.ch/Attic/openStep/implementation/gnustep/sources/alpha-snapshots/pthreads.0.9.2.tgz#/pthreads-0.9.2/socklib/pthread_socket.h

This is pthread_socket.h in view mode; [Download] [Up]

/*
 * pthread_socket.h
 */
#ifndef _pthread_socket_
#define _pthread_socket_

#include <fcntl.h>
#include <syscall.h>
#include <sys/socket.h>
#include <sys/socketcall.h>
#include <sys/time.h>
#include <sys/types.h>
#include <arpa/inet.h>         /* inet_addr() and friends */
#include <linux/net.h>
#include <errno.h>
#include <pthread.h>

#undef OK
#define OK ((int) 0)

#undef NOTOK
#define NOTOK ((int) -1)

#define LOCK_ON \
{ \
   pthread_lock_global_np(); \
   errno = 0; \
   {
/* syscall goes here */

#define LOCK_OFF \
   } \
   if( errno ) \
       pthread_set_errno_np( errno ); \
   pthread_unlock_global_np(); \
}


#define SET_ERRNO(v) \
{ \
   pthread_lock_global_np(); \
   errno = (v) * -1; \
   pthread_unlock_global_np(); \
   pthread_set_errno_np( ((v) * -1) ); \
}

#define RETURN(r) \
{\
   if( r < OK ) \
   { \
       pthread_set_errno_np( errno ); \
       r = -1; \
   } \
   return(r); \
}

#ifndef ssize_t
#define ssize_t int
#endif 

extern int
sys_set_critical( void );

extern void
sys_restore_critical( int );

/*
 * Return TRUE if the specified file descriptor is set for O_NONBLOCK.
 * Otherwise, a value of FALSE is returned.
 */
extern int
nonblock_is_set( int fd );

/*
 * Set the input file descriptor to specify non-blocking I/O.  The
 * original value of the file descriptor's flags are saved in the
 * location referenced by the saved_flags variable.
 */ 
extern int
set_fd_nonblock( int fd );

/*
 * Set a file descriptor's flags to the values contained in the
 * saved flags parameter.  This function is used to restore a file
 * descriptor's flags to their original value after having been set
 * to non-blocking.
 */
extern int
clear_fd_nonblock(int fd );

#endif

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.