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
57f64c50
Commit
57f64c50
authored
Jan 27, 2012
by
Pieter Hintjens
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #225 from gitfoxi/master
Fix build on old-ass Linux
parents
6f32361f
c71375ea
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
110 additions
and
4 deletions
+110
-4
acinclude.m4
acinclude.m4
+5
-2
blob.hpp
src/blob.hpp
+94
-0
clock.cpp
src/clock.cpp
+10
-1
ctx.hpp
src/ctx.hpp
+1
-1
No files found.
acinclude.m4
View file @
57f64c50
...
@@ -629,17 +629,20 @@ dnl # LIBZMQ_CHECK_POLLER_EPOLL([action-if-found], [action-if-not-found])
...
@@ -629,17 +629,20 @@ dnl # LIBZMQ_CHECK_POLLER_EPOLL([action-if-found], [action-if-not-found])
dnl # Checks epoll polling system #
dnl # Checks epoll polling system #
dnl ################################################################################
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_POLLER_EPOLL], [{
AC_DEFUN([LIBZMQ_CHECK_POLLER_EPOLL], [{
AC_
LINK
_IFELSE(
AC_
RUN
_IFELSE(
[AC_LANG_PROGRAM(
[AC_LANG_PROGRAM(
[
[
#include <sys/epoll.h>
#include <sys/epoll.h>
],
],
[[
[[
struct epoll_event t_ev;
struct epoll_event t_ev;
epoll_create(10);
int r;
r = epoll_create(10);
return(r < 0);
]]
]]
)],
)],
[libzmq_cv_have_poller_epoll="yes" ; $1],
[libzmq_cv_have_poller_epoll="yes" ; $1],
[libzmq_cv_have_poller_epoll="no" ; $2],
[libzmq_cv_have_poller_epoll="no" ; $2])
[libzmq_cv_have_poller_epoll="no" ; $2])
}])
}])
...
...
src/blob.hpp
View file @
57f64c50
...
@@ -23,6 +23,100 @@
...
@@ -23,6 +23,100 @@
#include <string>
#include <string>
// Borrowed from id3lib_strings.h:
// They seem to be doing something for MSC, but since I only have gcc, I'll just do that
// Assuming this is uneccessary on GCC 4
// #if (defined(__GNUC__) && (__GNUC__ >= 3) || (defined(_MSC_VER) && _MSC_VER > 1000))
#if (defined(__GNUC__) && (__GNUC__ >= 3) && (__GNUC__ <= 4))
namespace
std
{
template
<>
struct
char_traits
<
unsigned
char
>
{
typedef
unsigned
char
char_type
;
// Unsigned as wint_t in unsigned.
typedef
unsigned
long
int_type
;
typedef
streampos
pos_type
;
typedef
streamoff
off_type
;
typedef
mbstate_t
state_type
;
static
void
assign
(
char_type
&
__c1
,
const
char_type
&
__c2
)
{
__c1
=
__c2
;
}
static
bool
eq
(
const
char_type
&
__c1
,
const
char_type
&
__c2
)
{
return
__c1
==
__c2
;
}
static
bool
lt
(
const
char_type
&
__c1
,
const
char_type
&
__c2
)
{
return
__c1
<
__c2
;
}
static
int
compare
(
const
char_type
*
__s1
,
const
char_type
*
__s2
,
size_t
__n
)
{
for
(
size_t
__i
=
0
;
__i
<
__n
;
++
__i
)
if
(
!
eq
(
__s1
[
__i
],
__s2
[
__i
]))
return
lt
(
__s1
[
__i
],
__s2
[
__i
])
?
-
1
:
1
;
return
0
;
}
static
size_t
length
(
const
char_type
*
__s
)
{
const
char_type
*
__p
=
__s
;
while
(
__p
)
++
__p
;
return
(
__p
-
__s
);
}
static
const
char_type
*
find
(
const
char_type
*
__s
,
size_t
__n
,
const
char_type
&
__a
)
{
for
(
const
char_type
*
__p
=
__s
;
size_t
(
__p
-
__s
)
<
__n
;
++
__p
)
if
(
*
__p
==
__a
)
return
__p
;
return
0
;
}
static
char_type
*
move
(
char_type
*
__s1
,
const
char_type
*
__s2
,
size_t
__n
)
{
return
(
char_type
*
)
memmove
(
__s1
,
__s2
,
__n
*
sizeof
(
char_type
));
}
static
char_type
*
copy
(
char_type
*
__s1
,
const
char_type
*
__s2
,
size_t
__n
)
{
return
(
char_type
*
)
memcpy
(
__s1
,
__s2
,
__n
*
sizeof
(
char_type
));
}
static
char_type
*
assign
(
char_type
*
__s
,
size_t
__n
,
char_type
__a
)
{
for
(
char_type
*
__p
=
__s
;
__p
<
__s
+
__n
;
++
__p
)
assign
(
*
__p
,
__a
);
return
__s
;
}
static
char_type
to_char_type
(
const
int_type
&
__c
)
{
return
char_type
();
}
static
int_type
to_int_type
(
const
char_type
&
__c
)
{
return
int_type
();
}
static
bool
eq_int_type
(
const
int_type
&
__c1
,
const
int_type
&
__c2
)
{
return
__c1
==
__c2
;
}
static
int_type
eof
()
{
return
static_cast
<
int_type
>
(
-
1
);
}
static
int_type
not_eof
(
const
int_type
&
__c
)
{
return
eq_int_type
(
__c
,
eof
())
?
int_type
(
0
)
:
__c
;
}
};
}
// namespace std
#endif // GCC version 3
namespace
zmq
namespace
zmq
{
{
...
...
src/clock.cpp
View file @
57f64c50
...
@@ -70,7 +70,16 @@ uint64_t zmq::clock_t::now_us ()
...
@@ -70,7 +70,16 @@ uint64_t zmq::clock_t::now_us ()
// Use POSIX clock_gettime function to get precise monotonic time.
// Use POSIX clock_gettime function to get precise monotonic time.
struct
timespec
tv
;
struct
timespec
tv
;
int
rc
=
clock_gettime
(
CLOCK_MONOTONIC
,
&
tv
);
int
rc
=
clock_gettime
(
CLOCK_MONOTONIC
,
&
tv
);
errno_assert
(
rc
==
0
);
// Fix case where system has clock_gettime but CLOCK_MONOTONIC is not supported.
// This should be a configuration check, but I looked into it and writing an
// AC_FUNC_CLOCK_MONOTONIC seems beyond my powers.
if
(
rc
!=
0
)
{
// Use POSIX gettimeofday function to get precise time.
struct
timeval
tv
;
int
rc
=
gettimeofday
(
&
tv
,
NULL
);
errno_assert
(
rc
==
0
);
return
(
tv
.
tv_sec
*
(
uint64_t
)
1000000
+
tv
.
tv_usec
);
}
return
(
tv
.
tv_sec
*
(
uint64_t
)
1000000
+
tv
.
tv_nsec
/
1000
);
return
(
tv
.
tv_sec
*
(
uint64_t
)
1000000
+
tv
.
tv_nsec
/
1000
);
#else
#else
...
...
src/ctx.hpp
View file @
57f64c50
...
@@ -99,9 +99,9 @@ namespace zmq
...
@@ -99,9 +99,9 @@ namespace zmq
reaper_tid
=
1
reaper_tid
=
1
};
};
~
ctx_t
();
private
:
private
:
~
ctx_t
();
// Used to check whether the object is a context.
// Used to check whether the object is a context.
uint32_t
tag
;
uint32_t
tag
;
...
...
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