Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
L
libzmq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
libzmq
Commits
2a79a943
Commit
2a79a943
authored
Feb 18, 2010
by
Martin Lucina
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add NetBSD support
parent
776b1263
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
77 additions
and
43 deletions
+77
-43
configure.in
configure.in
+13
-0
atomic_bitmap.hpp
src/atomic_bitmap.hpp
+8
-8
atomic_counter.hpp
src/atomic_counter.hpp
+7
-7
atomic_ptr.hpp
src/atomic_ptr.hpp
+7
-7
ip.cpp
src/ip.cpp
+2
-9
ip.hpp
src/ip.hpp
+10
-0
kqueue.cpp
src/kqueue.cpp
+14
-3
kqueue.hpp
src/kqueue.hpp
+2
-1
poll.cpp
src/poll.cpp
+2
-1
poll.hpp
src/poll.hpp
+2
-1
poller.hpp
src/poller.hpp
+2
-0
tcp_listener.cpp
src/tcp_listener.cpp
+1
-1
uuid.cpp
src/uuid.cpp
+1
-1
uuid.hpp
src/uuid.hpp
+2
-2
zmq.cpp
src/zmq.cpp
+4
-2
No files found.
configure.in
View file @
2a79a943
...
...
@@ -154,6 +154,19 @@ case "${host_os}" in
AC_DEFINE(ZMQ_HAVE_OSX, 1, [Have DarwinOSX OS])
LIBZMQ_EXTRA_CXXFLAGS+="-Wno-uninitialized"
;;
*netbsd*)
# Define on NetBSD to enable all library features
CPPFLAGS="-D_NETBSD_SOURCE $CPPFLAGS"
AC_DEFINE(ZMQ_HAVE_NETBSD, 1, [Have NetBSD OS])
# NetBSD 5.0 and newer provides atomic operations
netbsd_has_atomic=no
# XXX As of 5.0.1 the functions declared in atomic.h are
# missing "extern C", disable this until upstream fixes it.
# AC_CHECK_HEADERS(atomic.h, [netbsd_has_atomic=yes])
if test "x$netbsd_has_atomic" = "xno"; then
AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes])
fi
;;
*openbsd*)
# Define on OpenBSD to enable all library features
CPPFLAGS="-D_BSD_SOURCE $CPPFLAGS"
...
...
src/atomic_bitmap.hpp
View file @
2a79a943
...
...
@@ -34,8 +34,8 @@
#define ZMQ_ATOMIC_BITMAP_SPARC
#elif defined ZMQ_HAVE_WINDOWS
#define ZMQ_ATOMIC_BITMAP_WINDOWS
#elif
defined ZMQ_HAVE_SOLARIS
#define ZMQ_ATOMIC_BITMAP_S
OLARIS
#elif
(defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_NETBSD)
#define ZMQ_ATOMIC_BITMAP_S
YSTEM
#else
#define ZMQ_ATOMIC_BITMAP_MUTEX
#endif
...
...
@@ -44,7 +44,7 @@
#include "mutex.hpp"
#elif defined ZMQ_ATOMIC_BITMAP_WINDOWS
#include "windows.hpp"
#elif defined ZMQ_ATOMIC_BITMAP_S
OLARIS
#elif defined ZMQ_ATOMIC_BITMAP_S
YSTEM
#include <atomic.h>
#endif
...
...
@@ -89,7 +89,7 @@ namespace zmq
return
(
oldval
&
(
bitmap_t
(
1
)
<<
reset_index_
))
?
true
:
false
;
}
#elif defined ZMQ_ATOMIC_BITMAP_S
OLARIS
#elif defined ZMQ_ATOMIC_BITMAP_S
YSTEM
while
(
true
)
{
bitmap_t
oldval
=
value
;
bitmap_t
newval
=
(
oldval
|
(
bitmap_t
(
1
)
<<
set_index_
))
&
...
...
@@ -150,7 +150,7 @@ namespace zmq
bitmap_t
oldval
;
#if defined ZMQ_ATOMIC_BITMAP_WINDOWS
oldval
=
InterlockedExchange
((
volatile
LONG
*
)
&
value
,
newval_
);
#elif defined ZMQ_ATOMIC_BITMAP_S
OLARIS
#elif defined ZMQ_ATOMIC_BITMAP_S
YSTEM
oldval
=
atomic_swap_32
(
&
value
,
newval_
);
#elif defined ZMQ_ATOMIC_BITMAP_X86
oldval
=
newval_
;
...
...
@@ -201,7 +201,7 @@ namespace zmq
newval
,
oldval
)
==
(
LONG
)
oldval
)
return
oldval
;
}
#elif defined ZMQ_ATOMIC_BITMAP_S
OLARIS
#elif defined ZMQ_ATOMIC_BITMAP_S
YSTEM
while
(
true
)
{
bitmap_t
oldval
=
value
;
bitmap_t
newval
=
oldval
==
0
?
thenval_
:
elseval_
;
...
...
@@ -270,8 +270,8 @@ namespace zmq
#if defined ZMQ_ATOMIC_BITMAP_WINDOWS
#undef ZMQ_ATOMIC_BITMAP_WINDOWS
#endif
#if defined ZMQ_ATOMIC_BITMAP_S
OLARIS
#undef ZMQ_ATOMIC_BITMAP_S
OLARIS
#if defined ZMQ_ATOMIC_BITMAP_S
YSTEM
#undef ZMQ_ATOMIC_BITMAP_S
YSTEM
#endif
#if defined ZMQ_ATOMIC_BITMAP_X86
#undef ZMQ_ATOMIC_BITMAP_X86
...
...
src/atomic_counter.hpp
View file @
2a79a943
...
...
@@ -31,8 +31,8 @@
#define ZMQ_ATOMIC_COUNTER_SPARC
#elif defined ZMQ_HAVE_WINDOWS
#define ZMQ_ATOMIC_COUNTER_WINDOWS
#elif
defined ZMQ_HAVE_SOLARIS
#define ZMQ_ATOMIC_COUNTER_S
OLARIS
#elif
(defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_NETBSD)
#define ZMQ_ATOMIC_COUNTER_S
YSTEM
#else
#define ZMQ_ATOMIC_COUNTER_MUTEX
#endif
...
...
@@ -41,7 +41,7 @@
#include "mutex.hpp"
#elif defined ZMQ_ATOMIC_COUNTER_WINDOWS
#include "windows.hpp"
#elif defined ZMQ_ATOMIC_COUNTER_S
OLARIS
#elif defined ZMQ_ATOMIC_COUNTER_S
YSTEM
#include <atomic.h>
#endif
...
...
@@ -79,7 +79,7 @@ namespace zmq
#if defined ZMQ_ATOMIC_COUNTER_WINDOWS
old_value
=
InterlockedExchangeAdd
((
LONG
*
)
&
value
,
increment_
);
#elif defined ZMQ_ATOMIC_COUNTER_S
OLARIS
#elif defined ZMQ_ATOMIC_COUNTER_S
YSTEM
integer_t
new_value
=
atomic_add_32_nv
(
&
value
,
increment_
);
old_value
=
new_value
-
increment_
;
#elif defined ZMQ_ATOMIC_COUNTER_X86
...
...
@@ -119,7 +119,7 @@ namespace zmq
LONG
delta
=
-
((
LONG
)
decrement
);
integer_t
old
=
InterlockedExchangeAdd
((
LONG
*
)
&
value
,
delta
);
return
old
-
decrement
!=
0
;
#elif defined ZMQ_ATOMIC_COUNTER_S
OLARIS
#elif defined ZMQ_ATOMIC_COUNTER_S
YSTEM
int32_t
delta
=
-
((
int32_t
)
decrement
);
integer_t
nv
=
atomic_add_32_nv
(
&
value
,
delta
);
return
nv
!=
0
;
...
...
@@ -180,8 +180,8 @@ namespace zmq
#if defined ZMQ_ATOMIC_COUNTER_WINDOWS
#undef ZMQ_ATOMIC_COUNTER_WINDOWS
#endif
#if defined ZMQ_ATOMIC_COUNTER_S
OLARIS
#undef ZMQ_ATOMIC_COUNTER_S
OLARIS
#if defined ZMQ_ATOMIC_COUNTER_S
YSTEM
#undef ZMQ_ATOMIC_COUNTER_S
YSTEM
#endif
#if defined ZMQ_ATOMIC_COUNTER_X86
#undef ZMQ_ATOMIC_COUNTER_X86
...
...
src/atomic_ptr.hpp
View file @
2a79a943
...
...
@@ -31,8 +31,8 @@
#define ZMQ_ATOMIC_PTR_SPARC
#elif defined ZMQ_HAVE_WINDOWS
#define ZMQ_ATOMIC_PTR_WINDOWS
#elif
defined ZMQ_HAVE_SOLARIS
#define ZMQ_ATOMIC_PTR_S
OLARIS
#elif
(defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_NETBSD)
#define ZMQ_ATOMIC_PTR_S
YSTEM
#else
#define ZMQ_ATOMIC_PTR_MUTEX
#endif
...
...
@@ -41,7 +41,7 @@
#include "mutex.hpp"
#elif defined ZMQ_ATOMIC_PTR_WINDOWS
#include "windows.hpp"
#elif defined ZMQ_ATOMIC_PTR_S
OLARIS
#elif defined ZMQ_ATOMIC_PTR_S
YSTEM
#include <atomic.h>
#endif
...
...
@@ -79,7 +79,7 @@ namespace zmq
{
#if defined ZMQ_ATOMIC_PTR_WINDOWS
return
(
T
*
)
InterlockedExchangePointer
(
&
ptr
,
val_
);
#elif defined ZMQ_ATOMIC_PTR_S
OLARIS
#elif defined ZMQ_ATOMIC_PTR_S
YSTEM
return
(
T
*
)
atomic_swap_ptr
(
&
ptr
,
val_
);
#elif defined ZMQ_ATOMIC_PTR_X86
T
*
old
;
...
...
@@ -125,7 +125,7 @@ namespace zmq
#if defined ZMQ_ATOMIC_PTR_WINDOWS
return
(
T
*
)
InterlockedCompareExchangePointer
(
(
volatile
PVOID
*
)
&
ptr
,
val_
,
cmp_
);
#elif defined ZMQ_ATOMIC_PTR_S
OLARIS
#elif defined ZMQ_ATOMIC_PTR_S
YSTEM
return
(
T
*
)
atomic_cas_ptr
(
&
ptr
,
cmp_
,
val_
);
#elif defined ZMQ_ATOMIC_PTR_X86
T
*
old
;
...
...
@@ -173,8 +173,8 @@ namespace zmq
#if defined ZMQ_ATOMIC_PTR_WINDOWS
#undef ZMQ_ATOMIC_PTR_WINDOWS
#endif
#if defined ZMQ_ATOMIC_PTR_S
OLARIS
#undef ZMQ_ATOMIC_PTR_S
OLARIS
#if defined ZMQ_ATOMIC_PTR_S
YSTEM
#undef ZMQ_ATOMIC_PTR_S
YSTEM
#endif
#if defined ZMQ_ATOMIC_PTR_X86
#undef ZMQ_ATOMIC_PTR_X86
...
...
src/ip.cpp
View file @
2a79a943
...
...
@@ -125,7 +125,8 @@ static int resolve_nic_name (in_addr* addr_, char const *interface_)
#elif ((defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_OPENBSD ||\
defined ZMQ_HAVE_QNXNTO) && defined ZMQ_HAVE_IFADDRS)
defined ZMQ_HAVE_QNXNTO || defined ZMQ_HAVE_NETBSD)\
&& defined ZMQ_HAVE_IFADDRS)
#include <ifaddrs.h>
...
...
@@ -239,11 +240,7 @@ int zmq::resolve_ip_interface (sockaddr_storage* addr_, socklen_t *addr_len_,
// Restrict hostname/service to literals to avoid any DNS lookups or
// service-name irregularity due to indeterminate socktype.
#if defined ZMQ_HAVE_OSX
req
.
ai_flags
=
AI_PASSIVE
|
AI_NUMERICHOST
;
#else
req
.
ai_flags
=
AI_PASSIVE
|
AI_NUMERICHOST
|
AI_NUMERICSERV
;
#endif
// Resolve the literal address. Some of the error info is lost in case
// of error, however, there's no way to report EAI errors via errno.
...
...
@@ -292,11 +289,7 @@ int zmq::resolve_ip_hostname (sockaddr_storage *addr_, socklen_t *addr_len_,
// Avoid named services due to unclear socktype, and don't pick IPv6
// addresses if we don't have a local IPv6 address configured.
#if defined ZMQ_HAVE_OSX
req
.
ai_flags
=
AI_ADDRCONFIG
;
#else
req
.
ai_flags
=
AI_NUMERICSERV
|
AI_ADDRCONFIG
;
#endif
// Resolve host name. Some of the error info is lost in case of error,
// however, there's no way to report EAI errors via errno.
...
...
src/ip.hpp
View file @
2a79a943
...
...
@@ -30,6 +30,16 @@
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netdb.h>
// Some platforms (notably Darwin/OSX and NetBSD) do not define all AI_
// flags for getaddrinfo(). This can be worked around safely by defining
// these to 0.
#ifndef AI_ADDRCONFIG
#define AI_ADDRCONFIG 0
#endif
#ifndef AI_NUMERICSERV
#define AI_NUMERICSERV 0
#endif
#endif
#if !defined ZMQ_HAVE_WINDOWS && !defined ZMQ_HAVE_OPENVMS
...
...
src/kqueue.cpp
View file @
2a79a943
...
...
@@ -19,7 +19,8 @@
#include "platform.hpp"
#if defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_OSX
#if defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_OPENBSD ||\
defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_NETBSD
#include <sys/time.h>
#include <sys/types.h>
...
...
@@ -34,6 +35,14 @@
#include "config.hpp"
#include "i_poll_events.hpp"
// NetBSD defines (struct kevent).udata as intptr_t, everyone else
// as void *.
#if defined ZMQ_HAVE_NETBSD
#define kevent_udata_t intptr_t
#else
#define kevent_udata_t void *
#endif
zmq
::
kqueue_t
::
kqueue_t
()
:
stopping
(
false
)
{
...
...
@@ -56,7 +65,7 @@ void zmq::kqueue_t::kevent_add (fd_t fd_, short filter_, void *udata_)
{
struct
kevent
ev
;
EV_SET
(
&
ev
,
fd_
,
filter_
,
EV_ADD
,
0
,
0
,
udata_
);
EV_SET
(
&
ev
,
fd_
,
filter_
,
EV_ADD
,
0
,
0
,
(
kevent_udata_t
)
udata_
);
int
rc
=
kevent
(
kqueue_fd
,
&
ev
,
1
,
NULL
,
0
,
NULL
);
errno_assert
(
rc
!=
-
1
);
}
...
...
@@ -65,7 +74,7 @@ void zmq::kqueue_t::kevent_delete (fd_t fd_, short filter_)
{
struct
kevent
ev
;
EV_SET
(
&
ev
,
fd_
,
filter_
,
EV_DELETE
,
0
,
0
,
NULL
);
EV_SET
(
&
ev
,
fd_
,
filter_
,
EV_DELETE
,
0
,
0
,
(
kevent_udata_t
)
NULL
);
int
rc
=
kevent
(
kqueue_fd
,
&
ev
,
1
,
NULL
,
0
,
NULL
);
errno_assert
(
rc
!=
-
1
);
}
...
...
@@ -212,4 +221,6 @@ void zmq::kqueue_t::worker_routine (void *arg_)
((
kqueue_t
*
)
arg_
)
->
loop
();
}
// Don't pollute namespace with defines local to this file
#undef kevent_udata_t
#endif
src/kqueue.hpp
View file @
2a79a943
...
...
@@ -22,7 +22,8 @@
#include "platform.hpp"
#if defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_OSX
#if defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_OPENBSD ||\
defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_NETBSD
#include <vector>
...
...
src/poll.cpp
View file @
2a79a943
...
...
@@ -22,7 +22,8 @@
#if defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX
defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
defined ZMQ_HAVE_NETBSD
#include <sys/types.h>
#include <sys/time.h>
...
...
src/poll.hpp
View file @
2a79a943
...
...
@@ -25,7 +25,8 @@
#if defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX
defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
defined ZMQ_HAVE_NETBSD
#include <poll.h>
#include <stddef.h>
...
...
src/poller.hpp
View file @
2a79a943
...
...
@@ -47,6 +47,8 @@ namespace zmq
typedef
kqueue_t
poller_t
;
#elif defined ZMQ_HAVE_OPENBSD
typedef
kqueue_t
poller_t
;
#elif defined ZMQ_HAVE_NETBSD
typedef
kqueue_t
poller_t
;
#elif defined ZMQ_HAVE_SOLARIS
typedef
devpoll_t
poller_t
;
#elif defined ZMQ_HAVE_OSX
...
...
src/tcp_listener.cpp
View file @
2a79a943
...
...
@@ -275,7 +275,7 @@ zmq::fd_t zmq::tcp_listener_t::accept ()
#if (defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD || \
defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_OSX || \
defined ZMQ_HAVE_OPENVMS)
defined ZMQ_HAVE_OPENVMS
|| defined ZMQ_HAVE_NETBSD
)
if
(
sock
==
-
1
&&
(
errno
==
EAGAIN
||
errno
==
EWOULDBLOCK
||
errno
==
EINTR
||
errno
==
ECONNABORTED
))
...
...
src/uuid.cpp
View file @
2a79a943
...
...
@@ -47,7 +47,7 @@ const char *zmq::uuid_t::to_string ()
return
(
char
*
)
uuid_str
;
}
#elif defined ZMQ_HAVE_FREEBSD
#elif defined ZMQ_HAVE_FREEBSD
|| defined ZMQ_HAVE_NETBSD
#include <stdlib.h>
#include <uuid.h>
...
...
src/uuid.hpp
View file @
2a79a943
...
...
@@ -23,7 +23,7 @@
#include "platform.hpp"
#include "stdint.hpp"
#if defined ZMQ_HAVE_FREEBSD
#if defined ZMQ_HAVE_FREEBSD
|| defined ZMQ_HAVE_NETBSD
#include <uuid.h>
#elif defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_OSX
#include <uuid/uuid.h>
...
...
@@ -60,7 +60,7 @@ namespace zmq
#endif
::
UUID
uuid
;
RPC_CSTR
uuid_str
;
#elif defined ZMQ_HAVE_FREEBSD
#elif defined ZMQ_HAVE_FREEBSD
|| defined ZMQ_HAVE_NETBSD
::
uuid_t
uuid
;
char
*
uuid_str
;
#elif defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_OSX
...
...
src/zmq.cpp
View file @
2a79a943
...
...
@@ -37,7 +37,8 @@
#if defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX
defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
defined ZMQ_HAVE_NETBSD
#include <poll.h>
#endif
...
...
@@ -325,7 +326,8 @@ int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_)
#if defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX
defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
defined ZMQ_HAVE_NETBSD
pollfd
*
pollfds
=
(
pollfd
*
)
malloc
(
nitems_
*
sizeof
(
pollfd
));
zmq_assert
(
pollfds
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment