1 - Ported some of IPV6 code to 1.6.7.
2 - Backport of svn revision 527: * Added API to ithread, created the following functions: - int ithread_initialize_library(void); - int ithread_cleanup_library(void); - int ithread_initialize_thread(void); - int ithread_cleanup_thread(void); * SF Bug Tracker [ 2876374 ] Access Violation when compiling with Visual Studio 2008 Submitted: Stulle ( stulleamgym ) - 2009-10-10 19:05 Hi, I am one of the devs of the MorphXT project and I use this lib in some other of my projects, too. When I tried to upgrade the lib earlier for one of my projects I had to realise that something did not work at first and while most of the things were reasonably ease to be fixed. Now, the last thing I encountered was not so easy to fix and I am uncertain if my fix is any good so I'll just post it here and wait for some comments. The problem was that I got an Access Violation when calling "UpnpInit". It would call "ithread_rwlock_init(&GlobalHndRWLock, NULL)" which eventually led to calling "pthread_cond_init" and I got the error notice at "EnterCriticalSection (&ptw32_cond_list_lock);". It appeared that "ptw32_cond_list_lock" was NULL. Now, I found two ways to fix this. Firstly moving the whole block after at least one of the "ThreadPoolInit" calls will fix the issue. Secondly, you could add: #ifdef WIN32 #ifdef PTW32_STATIC_LIB // to get the following working we need this... is it a good patch or not... I do not know! pthread_win32_process_attach_np(); #endif #endif right before "ithread_rwlock_init(&GlobalHndRWLock, NULL)". Just so you know, I am using libupnp 1.6.6 and libpthreads 2.8.0 and both are linked static into the binaries. I am currently using Visual Studio 2008 for development with Windows being the target OS. Any comment at your end? Regards, Stulle git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/branches/branch-1.6.x@529 119443c7-1b9e-41f8-b6fc-b9c35fce742c
This commit is contained in:
@@ -1,65 +1,90 @@
|
||||
/*
|
||||
** Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
|
||||
** Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
|
||||
** Digital Equipment Corporation, Maynard, Mass.
|
||||
** Copyright (c) 1998 Microsoft.
|
||||
** To anyone who acknowledges that this file is provided "AS IS"
|
||||
** without any express or implied warranty: permission to use, copy,
|
||||
** modify, and distribute this file for any purpose is hereby
|
||||
** granted without fee, provided that the above copyright notices and
|
||||
** this notice appears in all source code copies, and that none of
|
||||
** the names of Open Software Foundation, Inc., Hewlett-Packard
|
||||
** Company, or Digital Equipment Corporation be used in advertising
|
||||
** or publicity pertaining to distribution of the software without
|
||||
** specific, written prior permission. Neither Open Software
|
||||
** Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital Equipment
|
||||
** Corporation makes any representations about the suitability of
|
||||
** this software for any purpose.
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
|
||||
* Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
|
||||
* Digital Equipment Corporation, Maynard, Mass.
|
||||
* Copyright (c) 1998 Microsoft.
|
||||
* To anyone who acknowledges that this file is provided "AS IS"
|
||||
* without any express or implied warranty: permission to use, copy,
|
||||
* modify, and distribute this file for any purpose is hereby
|
||||
* granted without fee, provided that the above copyright notices and
|
||||
* this notice appears in all source code copies, and that none of
|
||||
* the names of Open Software Foundation, Inc., Hewlett-Packard
|
||||
* Company, or Digital Equipment Corporation be used in advertising
|
||||
* or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Neither Open Software
|
||||
* Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital Equipment
|
||||
* Corporation makes any representations about the suitability of
|
||||
* this software for any purpose.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef SYSDEP_H
|
||||
#define SYSDEP_H
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#ifndef WIN32
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
//#include <sys/sysinfo.h>
|
||||
#include "ithread.h"
|
||||
|
||||
|
||||
/* change to point to where MD5 .h's live */
|
||||
/* get MD5 sample implementation from RFC 1321 */
|
||||
#include "global.h"
|
||||
#include "md5.h"
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
#ifdef WIN32
|
||||
/* Do not #include <sys/time.h> */
|
||||
#else
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
|
||||
/* set the following to the number of 100ns ticks of the actual
|
||||
resolution of
|
||||
your system's clock */
|
||||
#define UUIDS_PER_TICK 1024
|
||||
|
||||
|
||||
/* Set the following to a call to acquire a system wide global lock
|
||||
*/
|
||||
extern ithread_mutex_t gUUIDMutex;
|
||||
|
||||
|
||||
#define UUIDLock() ithread_mutex_lock(&gUUIDMutex)
|
||||
#define UUIDUnlock() ithread_mutex_unlock(&gUUIDMutex)
|
||||
|
||||
|
||||
typedef unsigned long unsigned32;
|
||||
typedef unsigned short unsigned16;
|
||||
typedef unsigned char unsigned8;
|
||||
typedef unsigned char byte;
|
||||
|
||||
|
||||
/* Set this to what your compiler uses for 64 bit data type */
|
||||
#ifndef WIN32
|
||||
#define unsigned64_t unsigned long long
|
||||
#ifdef WIN32
|
||||
#define unsigned64_t __int64
|
||||
#else
|
||||
#define unsigned64_t __int64
|
||||
#define unsigned64_t unsigned long long
|
||||
#endif
|
||||
|
||||
|
||||
#define I64(C) C##LL
|
||||
|
||||
|
||||
typedef unsigned64_t uuid_time_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
char nodeID[6];
|
||||
char nodeID[6];
|
||||
} uuid_node_t;
|
||||
|
||||
|
||||
void get_ieee_node_identifier(uuid_node_t *node);
|
||||
void get_system_time(uuid_time_t *uuid_time);
|
||||
void get_random_info(char seed[16]);
|
||||
|
||||
|
||||
#endif /* SYSDEP_H */
|
||||
|
||||
|
Reference in New Issue
Block a user