On Fri, May 04, 2007 at 08:21:08AM +0200, Wouter Wijngaards wrote:
> Hi Harry,
> 
> I looked over your patch.
> * perhaps you should have configure detect __inline or inline. Some
> platforms do not understand plain 'inline' I believe.

configure.in already calls AC_C_INLINE, which should define "inline"
to whatever keyword the compiler uses for that feature, or nothing if
it is unsupported.

> * the volatile keyword is needed because the signal handler sets this
> variable, then wakes up the eventloop. The eventloop reads the variable.
> Thus this variable is volatile for the eventloop, since a signal handler
> can change it at any time. Could you please add it back.

You're right, sorry about that.  I didn't realize that variables
accessed in a signal handler required "volatile."  Here's an updated
patch.

Harry
Index: http.c
===================================================================
--- http.c	(revision 353)
+++ http.c	(working copy)
@@ -1569,7 +1569,7 @@
 
 /* Requires that headers and response code are already set up */
 
-static __inline void
+static inline void
 evhttp_send(struct evhttp_request *req, struct evbuffer *databuf)
 {
 	struct evhttp_connection *evcon = req->evcon;
Index: event_tagging.c
===================================================================
--- event_tagging.c	(revision 353)
+++ event_tagging.c	(working copy)
@@ -58,7 +58,7 @@
 #include "event.h"
 #include "log.h"
 
-int decode_int(u_int32_t *pnumber, struct evbuffer *evbuf);
+int decode_int(uint32_t *pnumber, struct evbuffer *evbuf);
 
 static struct evbuffer *_buf;	/* not thread safe */
 
@@ -79,10 +79,10 @@
  */
 
 void
-encode_int(struct evbuffer *evbuf, u_int32_t number)
+encode_int(struct evbuffer *evbuf, uint32_t number)
 {
 	int off = 1, nibbles = 0;
-	u_int8_t data[5];
+	uint8_t data[5];
 
 	memset(data, 0, sizeof(data));
 	while (number) {
@@ -111,8 +111,8 @@
  */
 
 void
-evtag_marshal(struct evbuffer *evbuf, u_int8_t tag,
-    const void *data, u_int32_t len)
+evtag_marshal(struct evbuffer *evbuf, uint8_t tag,
+    const void *data, uint32_t len)
 {
 	evbuffer_add(evbuf, &tag, sizeof(tag));
 	encode_int(evbuf, len);
@@ -121,7 +121,7 @@
 
 /* Marshaling for integers */
 void
-evtag_marshal_int(struct evbuffer *evbuf, u_int8_t tag, u_int32_t integer)
+evtag_marshal_int(struct evbuffer *evbuf, uint8_t tag, uint32_t integer)
 {
 	evbuffer_drain(_buf, EVBUFFER_LENGTH(_buf));
 	encode_int(_buf, integer);
@@ -132,13 +132,13 @@
 }
 
 void
-evtag_marshal_string(struct evbuffer *buf, u_int8_t tag, const char *string)
+evtag_marshal_string(struct evbuffer *buf, uint8_t tag, const char *string)
 {
 	evtag_marshal(buf, tag, string, strlen(string));
 }
 
 void
-evtag_marshal_timeval(struct evbuffer *evbuf, u_int8_t tag, struct timeval *tv)
+evtag_marshal_timeval(struct evbuffer *evbuf, uint8_t tag, struct timeval *tv)
 {
 	evbuffer_drain(_buf, EVBUFFER_LENGTH(_buf));
 
@@ -149,11 +149,11 @@
 	    EVBUFFER_LENGTH(_buf));
 }
 
-static int __inline
-decode_int_internal(u_int32_t *pnumber, struct evbuffer *evbuf, int dodrain)
+static int inline
+decode_int_internal(uint32_t *pnumber, struct evbuffer *evbuf, int dodrain)
 {
-	u_int32_t number = 0;
-	u_int8_t *data = EVBUFFER_DATA(evbuf);
+	uint32_t number = 0;
+	uint8_t *data = EVBUFFER_DATA(evbuf);
 	int len = EVBUFFER_LENGTH(evbuf);
 	int nibbles = 0, off;
 
@@ -184,13 +184,13 @@
 }
 
 int
-decode_int(u_int32_t *pnumber, struct evbuffer *evbuf)
+decode_int(uint32_t *pnumber, struct evbuffer *evbuf)
 {
 	return (decode_int_internal(pnumber, evbuf, 1) == -1 ? -1 : 0);
 }
 
 int
-evtag_peek(struct evbuffer *evbuf, u_int8_t *ptag)
+evtag_peek(struct evbuffer *evbuf, uint8_t *ptag)
 {
 	if (EVBUFFER_LENGTH(evbuf) < 2)
 		return (-1);
@@ -200,7 +200,7 @@
 }
 
 int
-evtag_peek_length(struct evbuffer *evbuf, u_int32_t *plength)
+evtag_peek_length(struct evbuffer *evbuf, uint32_t *plength)
 {
 	struct evbuffer tmp;
 	int res;
@@ -222,7 +222,7 @@
 }
 
 int
-evtag_payload_length(struct evbuffer *evbuf, u_int32_t *plength)
+evtag_payload_length(struct evbuffer *evbuf, uint32_t *plength)
 {
 	struct evbuffer tmp;
 	int res;
@@ -244,7 +244,7 @@
 int
 evtag_consume(struct evbuffer *evbuf)
 {
-	u_int32_t len;
+	uint32_t len;
 	evbuffer_drain(evbuf, 1);
 	if (decode_int(&len, evbuf) == -1)
 		return (-1);
@@ -256,11 +256,11 @@
 /* Reads the data type from an event buffer */
 
 int
-evtag_unmarshal(struct evbuffer *src, u_int8_t *ptag, struct evbuffer *dst)
+evtag_unmarshal(struct evbuffer *src, uint8_t *ptag, struct evbuffer *dst)
 {
-	u_int8_t tag;
-	u_int32_t len;
-	u_int32_t integer;
+	uint8_t tag;
+	uint32_t len;
+	uint32_t integer;
 
 	if (evbuffer_remove(src, &tag, sizeof(tag)) != sizeof(tag))
 		return (-1);
@@ -283,12 +283,12 @@
 /* Marshaling for integers */
 
 int
-evtag_unmarshal_int(struct evbuffer *evbuf, u_int8_t need_tag,
-    u_int32_t *pinteger)
+evtag_unmarshal_int(struct evbuffer *evbuf, uint8_t need_tag,
+    uint32_t *pinteger)
 {
-	u_int8_t tag;
-	u_int32_t len;
-	u_int32_t integer;
+	uint8_t tag;
+	uint32_t len;
+	uint32_t integer;
 
 	if (evbuffer_remove(evbuf, &tag, sizeof(tag)) != sizeof(tag) ||
 	    tag != need_tag)
@@ -312,10 +312,10 @@
 /* Unmarshal a fixed length tag */
 
 int
-evtag_unmarshal_fixed(struct evbuffer *src, u_int8_t need_tag, void *data,
+evtag_unmarshal_fixed(struct evbuffer *src, uint8_t need_tag, void *data,
     size_t len)
 {
-	u_int8_t tag;
+	uint8_t tag;
 
 	/* Initialize this event buffer so that we can read into it */
 	evbuffer_drain(_buf, EVBUFFER_LENGTH(_buf));
@@ -332,10 +332,10 @@
 }
 
 int
-evtag_unmarshal_string(struct evbuffer *evbuf, u_int8_t need_tag,
+evtag_unmarshal_string(struct evbuffer *evbuf, uint8_t need_tag,
     char **pstring)
 {
-	u_int8_t tag;
+	uint8_t tag;
 
 	evbuffer_drain(_buf, EVBUFFER_LENGTH(_buf));
 
@@ -351,11 +351,11 @@
 }
 
 int
-evtag_unmarshal_timeval(struct evbuffer *evbuf, u_int8_t need_tag,
+evtag_unmarshal_timeval(struct evbuffer *evbuf, uint8_t need_tag,
     struct timeval *ptv)
 {
-	u_int8_t tag;
-	u_int32_t integer;
+	uint8_t tag;
+	uint32_t integer;
 
 	evbuffer_drain(_buf, EVBUFFER_LENGTH(_buf));
 	if (evtag_unmarshal(evbuf, &tag, _buf) == -1 || tag != need_tag)
Index: event_rpcgen.py
===================================================================
--- event_rpcgen.py	(revision 353)
+++ event_rpcgen.py	(working copy)
@@ -82,7 +82,7 @@
             self.PrintIdented(file, '  ', dcl)
         print >>file, ''
         for entry in self._entries:
-            print >>file, '  u_int8_t %s_set;' % entry.Name()
+            print >>file, '  uint8_t %s_set;' % entry.Name()
         print >>file, '};\n'
 
         print >>file, (
@@ -95,9 +95,9 @@
             self._name, self._name) +
             'int %s_complete(struct %s *);' % (self._name, self._name)
             )
-        print >>file, ('void evtag_marshal_%s(struct evbuffer *, u_int8_t, '
+        print >>file, ('void evtag_marshal_%s(struct evbuffer *, uint8_t, '
                        'const struct %s *);') % ( self._name, self._name)
-        print >>file, ('int evtag_unmarshal_%s(struct evbuffer *, u_int8_t, '
+        print >>file, ('int evtag_unmarshal_%s(struct evbuffer *, uint8_t, '
                        'struct %s *);') % ( self._name, self._name)
 
         # Write a setting function of every variable
@@ -198,7 +198,7 @@
                        ' struct evbuffer *evbuf)\n' % (
             self._name, self._name) +
                        '{\n'
-                       '  u_int8_t tag;\n'
+                       '  uint8_t tag;\n'
                        '  while (EVBUFFER_LENGTH(evbuf) > 0) {\n'
                        '    if (evtag_peek(evbuf, &tag) == -1)\n'
                        '      return (-1);\n'
@@ -247,12 +247,12 @@
         # Complete message unmarshaling
         print >>file, (
             'int\n'
-            'evtag_unmarshal_%s(struct evbuffer *evbuf, u_int8_t need_tag, '
+            'evtag_unmarshal_%s(struct evbuffer *evbuf, uint8_t need_tag, '
             ' struct %s *msg)'
             ) % (self._name, self._name)
         print >>file, (
             '{\n'
-            '  u_int8_t tag;\n'
+            '  uint8_t tag;\n'
             '  int res = -1;\n'
             '\n'
             '  struct evbuffer *tmp = evbuffer_new();\n'
@@ -274,7 +274,7 @@
         # Complete message marshaling
         print >>file, (
             'void\n'
-            'evtag_marshal_%s(struct evbuffer *evbuf, u_int8_t tag, '
+            'evtag_marshal_%s(struct evbuffer *evbuf, uint8_t tag, '
             'const struct %s *msg)\n' % (self._name, self._name) +
             '{\n'
             '  struct evbuffer *_buf = evbuffer_new();\n'
@@ -425,7 +425,7 @@
         Entry.__init__(self, type, name, tag)
 
         self._length = length
-        self._ctype = 'u_int8_t'
+        self._ctype = 'uint8_t'
 
     def GetDeclaration(self, funcname):
         code = [ 'int %s(struct %s *, %s **);' % (
@@ -438,7 +438,7 @@
         return code
         
     def Declaration(self):
-        dcl  = ['u_int8_t %s_data[%s];' % (self._name, self._length)]
+        dcl  = ['uint8_t %s_data[%s];' % (self._name, self._length)]
         
         return dcl
 
@@ -513,7 +513,7 @@
         # Init base class
         Entry.__init__(self, type, name, tag)
 
-        self._ctype = 'u_int32_t'
+        self._ctype = 'uint32_t'
 
     def CodeUnmarshal(self, buf, tag_name, var_name):
         code = ['if (evtag_unmarshal_int(%s, %s, &%s->%s_data) == -1) {' % (
@@ -530,7 +530,7 @@
         return code
 
     def Declaration(self):
-        dcl  = ['u_int32_t %s_data;' % self._name]
+        dcl  = ['uint32_t %s_data;' % self._name]
 
         return dcl
 
@@ -744,15 +744,15 @@
         # Init base class
         Entry.__init__(self, type, name, tag)
 
-        self._ctype = 'u_int8_t *'
+        self._ctype = 'uint8_t *'
 
     def GetDeclaration(self, funcname):
-        code = [ 'int %s(struct %s *, %s *, u_int32_t *);' % (
+        code = [ 'int %s(struct %s *, %s *, uint32_t *);' % (
             funcname, self._struct.Name(), self._ctype ) ]
         return code
         
     def AssignDeclaration(self, funcname):
-        code = [ 'int %s(struct %s *, const %s, u_int32_t);' % (
+        code = [ 'int %s(struct %s *, const %s, uint32_t);' % (
             funcname, self._struct.Name(), self._ctype ) ]
         return code
         
@@ -760,7 +760,7 @@
         name = self._name
         code = [ 'int',
                  '%s_%s_assign(struct %s *msg, '
-                 'const %s value, u_int32_t len)' % (
+                 'const %s value, uint32_t len)' % (
             self._struct.Name(), name,
             self._struct.Name(), self._ctype),
                  '{',
@@ -779,7 +779,7 @@
     def CodeGet(self):
         name = self._name
         code = [ 'int',
-                 '%s_%s_get(struct %s *msg, %s *value, u_int32_t *plen)' % (
+                 '%s_%s_get(struct %s *msg, %s *value, uint32_t *plen)' % (
             self._struct.Name(), name,
             self._struct.Name(), self._ctype),
                  '{',
@@ -841,8 +841,8 @@
         return code
 
     def Declaration(self):
-        dcl  = ['u_int8_t *%s_data;' % self._name,
-                'u_int32_t %s_length;' % self._name]
+        dcl  = ['uint8_t *%s_data;' % self._name,
+                'uint32_t %s_length;' % self._name]
 
         return dcl
 
Index: test/regress.c
===================================================================
--- test/regress.c	(revision 353)
+++ test/regress.c	(working copy)
@@ -820,7 +820,7 @@
    cleanup_test();
 }
 
-int decode_int(u_int32_t *pnumber, struct evbuffer *evbuf);
+int decode_int(uint32_t *pnumber, struct evbuffer *evbuf);
 
 void
 read_once_cb(int fd, short event, void *arg)
@@ -871,10 +871,10 @@
 evtag_int_test(void)
 {
 	struct evbuffer *tmp = evbuffer_new();
-	u_int32_t integers[TEST_MAX_INT] = {
+	uint32_t integers[TEST_MAX_INT] = {
 		0xaf0, 0x1000, 0x1, 0xdeadbeef, 0x00, 0xbef000
 	};
-	u_int32_t integer;
+	uint32_t integer;
 	int i;
 
 	for (i = 0; i < TEST_MAX_INT; i++) {
Index: devpoll.c
===================================================================
--- devpoll.c	(revision 353)
+++ devpoll.c	(working copy)
@@ -28,6 +28,7 @@
 #include "config.h"
 #endif
 
+#include <sys/tree.h>
 #include <sys/types.h>
 #include <sys/resource.h>
 #ifdef HAVE_SYS_TIME_H
@@ -47,6 +48,7 @@
 #include <assert.h>
 
 #include "event.h"
+#include "event-internal.h"
 #include "evsignal.h"
 #include "log.h"
 
Index: configure.in
===================================================================
--- configure.in	(revision 353)
+++ configure.in	(working copy)
@@ -37,6 +37,14 @@
 dnl Checks for libraries.
 AC_CHECK_LIB(socket, socket)
 
+dnl Determine required libraries for sockets.  This was copied from:
+dnl http://autoconf-archive.cryp.to/lib_socket_nsl.html
+AC_SEARCH_LIBS([gethostbyname], [nsl])
+AC_SEARCH_LIBS([socket], [socket], [], [
+  AC_CHECK_LIB([socket], [socket], [LIBS="-lsocket -lnsl $LIBS"], [], [-lnsl])
+])
+AC_SEARCH_LIBS([inet_aton], [resolv])
+
 dnl Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS(fcntl.h stdarg.h inttypes.h stdint.h poll.h signal.h unistd.h sys/epoll.h sys/time.h sys/queue.h sys/event.h sys/ioctl.h sys/devpoll.h port.h netinet/in6.h)
@@ -129,6 +137,7 @@
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_C_INLINE
+AC_C_VOLATILE
 AC_HEADER_TIME
 
 dnl Checks for library functions.
@@ -336,10 +345,6 @@
 
 AC_TYPE_PID_T
 AC_TYPE_SIZE_T
-AC_CHECK_TYPE(u_int64_t, unsigned long long)
-AC_CHECK_TYPE(u_int32_t, unsigned int)
-AC_CHECK_TYPE(u_int16_t, unsigned short)
-AC_CHECK_TYPE(u_int8_t, unsigned char)
 AC_CHECK_TYPES([struct in6_addr], , ,
 [#ifdef WIN32
 #include <winsock2.h>
Index: evsignal.h
===================================================================
--- evsignal.h	(revision 353)
+++ evsignal.h	(working copy)
@@ -27,6 +27,8 @@
 #ifndef _EVSIGNAL_H_
 #define _EVSIGNAL_H_
 
+#include <signal.h>
+
 struct evsignal_info {
 	struct event_list signalqueue;
 	struct event ev_signal;
Index: event.h
===================================================================
--- event.h	(revision 353)
+++ event.h	(working copy)
@@ -32,6 +32,7 @@
 #endif
 
 #include <stdarg.h>
+#include <stdint.h>
 
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
@@ -300,39 +301,39 @@
 
 void evtag_init(void);
 
-void evtag_marshal(struct evbuffer *evbuf, u_int8_t tag, const void *data,
-    u_int32_t len);
+void evtag_marshal(struct evbuffer *evbuf, uint8_t tag, const void *data,
+    uint32_t len);
 
-void encode_int(struct evbuffer *evbuf, u_int32_t number);
+void encode_int(struct evbuffer *evbuf, uint32_t number);
 
-void evtag_marshal_int(struct evbuffer *evbuf, u_int8_t tag,
-    u_int32_t integer);
+void evtag_marshal_int(struct evbuffer *evbuf, uint8_t tag,
+    uint32_t integer);
 
-void evtag_marshal_string(struct evbuffer *buf, u_int8_t tag,
+void evtag_marshal_string(struct evbuffer *buf, uint8_t tag,
     const char *string);
 
-void evtag_marshal_timeval(struct evbuffer *evbuf, u_int8_t tag,
+void evtag_marshal_timeval(struct evbuffer *evbuf, uint8_t tag,
     struct timeval *tv);
 
 void evtag_test(void);
 
-int evtag_unmarshal(struct evbuffer *src, u_int8_t *ptag,
+int evtag_unmarshal(struct evbuffer *src, uint8_t *ptag,
     struct evbuffer *dst);
-int evtag_peek(struct evbuffer *evbuf, u_int8_t *ptag);
-int evtag_peek_length(struct evbuffer *evbuf, u_int32_t *plength);
-int evtag_payload_length(struct evbuffer *evbuf, u_int32_t *plength);
+int evtag_peek(struct evbuffer *evbuf, uint8_t *ptag);
+int evtag_peek_length(struct evbuffer *evbuf, uint32_t *plength);
+int evtag_payload_length(struct evbuffer *evbuf, uint32_t *plength);
 int evtag_consume(struct evbuffer *evbuf);
 
-int evtag_unmarshal_int(struct evbuffer *evbuf, u_int8_t need_tag,
-    u_int32_t *pinteger);
+int evtag_unmarshal_int(struct evbuffer *evbuf, uint8_t need_tag,
+    uint32_t *pinteger);
 
-int evtag_unmarshal_fixed(struct evbuffer *src, u_int8_t need_tag, void *data,
+int evtag_unmarshal_fixed(struct evbuffer *src, uint8_t need_tag, void *data,
     size_t len);
 
-int evtag_unmarshal_string(struct evbuffer *evbuf, u_int8_t need_tag,
+int evtag_unmarshal_string(struct evbuffer *evbuf, uint8_t need_tag,
     char **pstring);
 
-int evtag_unmarshal_timeval(struct evbuffer *evbuf, u_int8_t need_tag,
+int evtag_unmarshal_timeval(struct evbuffer *evbuf, uint8_t need_tag,
     struct timeval *ptv);
 
 #ifdef __cplusplus
_______________________________________________
Libevent-users mailing list
Libevent-users@monkey.org
http://monkey.org/mailman/listinfo/libevent-users

Reply via email to