summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Burnicki <martin.burnicki@meinberg.de>2011-04-01 12:00:00 +0200
committerMartin Burnicki <martin.burnicki@meinberg.de>2011-04-01 12:00:00 +0200
commit8cfbcc7a4f20fa2d0bb34dabf646586830e0f9cc (patch)
tree41cabd06a37d2c1e71d25f7f6f431fccc8e2debf
parentb8272501b2c9b27da0f190342267d85d7bd0ea25 (diff)
downloadmbgtools-nbsd-8cfbcc7a4f20fa2d0bb34dabf646586830e0f9cc.tar.gz
mbgtools-nbsd-8cfbcc7a4f20fa2d0bb34dabf646586830e0f9cc.zip
Update files from mbgtools-nbsd-dev-2011-04-01.tar.gzmbgtools-nbsd-dev-2011-04-01
-rwxr-xr-xsrc/external/bsd/meinberg/dist/mbglib/common/parmpcps.h8
-rwxr-xr-xsrc/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.c38
-rwxr-xr-xsrc/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.h79
-rwxr-xr-xsrc/external/bsd/meinberg/mbgclock/mbgclock_main.c5
4 files changed, 77 insertions, 53 deletions
diff --git a/src/external/bsd/meinberg/dist/mbglib/common/parmpcps.h b/src/external/bsd/meinberg/dist/mbglib/common/parmpcps.h
index eafe487..7095d48 100755
--- a/src/external/bsd/meinberg/dist/mbglib/common/parmpcps.h
+++ b/src/external/bsd/meinberg/dist/mbglib/common/parmpcps.h
@@ -1,7 +1,7 @@
/**************************************************************************
*
- * $Id: parmpcps.h 1.6 2011/02/16 10:13:12 martin TEST $
+ * $Id: parmpcps.h 1.7 2011/04/01 10:30:51 martin REL_M $
*
* Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany
*
@@ -10,6 +10,8 @@
*
* -----------------------------------------------------------------------
* $Log: parmpcps.h $
+ * Revision 1.7 2011/04/01 10:30:51 martin
+ * Fixed macro syntax for _setup_default_receiver_info_dcf().
* Revision 1.6 2011/02/16 10:13:12 martin
* Fixed macro syntax for _setup_default_receiver_info_pcps().
* Revision 1.5 2004/11/09 14:24:58Z martin
@@ -102,7 +104,7 @@ extern "C" {
*
* Parameters: (RECEIVER_INFO *) _p
*/
-#define _setup_default_receiver_info_dcf( _p, _pdev ); \
+#define _setup_default_receiver_info_dcf( _p, _pdev ) \
do \
{ \
memset( (_p), 0, sizeof( *(_p) ) ); \
@@ -115,7 +117,7 @@ do \
} while ( 0 )
-#define DEFAULT_MAX_STR_TYPE 2 //##++DEFAULT_N_STR_TYPE_GPS
+#define DEFAULT_MAX_STR_TYPE 2 //##++ DEFAULT_N_STR_TYPE_GPS
_ext STR_TYPE_INFO default_str_type_info[DEFAULT_MAX_STR_TYPE]
#ifdef _DO_INIT
diff --git a/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.c b/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.c
index a2d021f..d94d570 100755
--- a/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.c
+++ b/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.c
@@ -1,7 +1,7 @@
/**************************************************************************
*
- * $Id: pcpsdrvr.c 1.46.2.35.1.1 2011/03/28 09:52:16 martin TRASH martin $
+ * $Id: pcpsdrvr.c 1.46.2.36 2011/04/01 10:38:00 martin TRASH $
*
* Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany
*
@@ -61,8 +61,9 @@
*
* -----------------------------------------------------------------------
* $Log: pcpsdrvr.c $
- * Revision 1.46.2.35.1.1 2011/03/28 09:52:16 martin
- * Fixes for compiler warnings from Frank Kardel.
+ * Revision 1.46.2.36 2011/04/01 10:38:00 martin
+ * Modified mutex/spinlock initialization, and do deinitializaton.
+ * Fixed compiler warnings.
* Revision 1.46.2.35 2011/03/25 11:10:34 martin
* Optionally support timespec for sys time (USE_TIMESPEC).
* Revision 1.46.2.34 2011/03/22 10:25:57 martin
@@ -2172,8 +2173,14 @@ PCPS_DDEV *pcps_alloc_ddev( void )
#endif
if ( pddev )
+ {
memset( pddev, 0, sizeof( *pddev ) );
+ _pcps_mutex_init( &pddev->dev_mutex );
+ _pcps_spin_lock_init( &pddev->mm_lock );
+ _pcps_spin_lock_init( &pddev->irq_lock );
+ }
+
return pddev;
} // pcps_alloc_ddev
@@ -2185,8 +2192,18 @@ void pcps_free_ddev( PCPS_DDEV *pddev )
{
#if !_PCPS_STATIC_DEV_LIST
if ( pddev )
+ {
+ _pcps_mutex_destroy( &pddev->dev_mutex );
+ _pcps_spin_lock_destroy( &pddev->mm_lock );
+ _pcps_spin_lock_destroy( &pddev->irq_lock );
+
_pcps_kfree( pddev, sizeof( *pddev ) );
+ }
#else
+ _pcps_mutex_destroy( &pddev->dev_mutex );
+ _pcps_spin_lock_destroy( &pddev->mm_lock );
+ _pcps_spin_lock_destroy( &pddev->irq_lock );
+
memset( pddev, 0, sizeof( *pddev ) );
if ( n_ddevs )
@@ -2402,9 +2419,8 @@ int pcps_start_device( PCPS_DDEV *pddev,
goto fail;
}
- _pcps_mutex_init( &pddev->dev_mutex );
- _pcps_spin_lock_init( &pddev->mm_lock );
- _pcps_spin_lock_init( &pddev->irq_lock );
+ // mutexes / spinlocks have already been initialized
+ // when the *pddef has been allocated.
switch ( _pcps_ddev_bus_flags( pddev ) )
{
@@ -2929,11 +2945,9 @@ chip_setup_done:
if ( _pcps_ddev_has_receiver_info( pddev ) )
{
- int lrc;
-
- lrc = _pcps_read_gps_var( pddev, PC_GPS_RECEIVER_INFO, pddev->ri );
+ rc = _pcps_read_gps_var( pddev, PC_GPS_RECEIVER_INFO, pddev->ri );
- if ( lrc == MBG_SUCCESS )
+ if ( rc == MBG_SUCCESS )
{
_mbg_swab_receiver_info( &rcvr_info );
goto check;
@@ -2945,9 +2959,9 @@ chip_setup_done:
if ( _pcps_ddev_is_gps( pddev ) )
_setup_default_receiver_info_gps( &pddev->ri );
- else {
+ else
_setup_default_receiver_info_dcf( &pddev->ri, &pddev->dev );
- }
+
check:
#if DEBUG_IO
diff --git a/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.h b/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.h
index 36de1da..42d7526 100755
--- a/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.h
+++ b/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.h
@@ -1,7 +1,7 @@
/**************************************************************************
*
- * $Id: pcpsdrvr.h 1.41.1.22 2011/03/31 10:35:57 martin TRASH $
+ * $Id: pcpsdrvr.h 1.41.1.23 2011/04/01 10:38:42 martin TRASH $
*
* Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany
*
@@ -10,6 +10,8 @@
*
* -----------------------------------------------------------------------
* $Log: pcpsdrvr.h $
+ * Revision 1.41.1.23 2011/04/01 10:38:42 martin
+ * Support mutex/spinlock destroy.
* Revision 1.41.1.22 2011/03/31 10:35:57 martin
* Fixed a typo.
* Revision 1.41.1.21 2011/03/28 09:53:52Z martin
@@ -457,6 +459,9 @@
// We use native alignment for structures which are not accessed across system boundaries.
+// Define some OS-specific primitives to alloc / free memory and handle
+// mutexes and spinlocks in kernel space.
+
#if defined( MBG_TGT_LINUX )
#define _pcps_kmalloc( _sz ) kmalloc( _sz, GFP_ATOMIC )
@@ -464,12 +469,13 @@
#define MBG_SPINLOCK spinlock_t
#define _pcps_spin_lock_init( _spl ) spin_lock_init( _spl )
- #define _pcps_spin_lock_deinit( _spl ) nop_macro_fnc()
+ #define _pcps_spin_lock_destroy( _spl ) _nop_macro_fnc()
#define _pcps_spin_lock( _spl ) spin_lock( _spl )
#define _pcps_spin_unlock( _spl ) spin_unlock( _spl )
#define MBG_SYS_MUTEX struct semaphore
#define _pcps_mutex_init( _pmtx ) sema_init( _pmtx, 1 )
+ #define _pcps_mutex_destroy( _pmtx ) _nop_macro_fnc()
// The special versions of _pcps_sem_inc() and _pcps_sem_dec() below
// are only required to prevent interference with the IRQ handler
@@ -498,55 +504,58 @@
// See "man 9 malloc" for details.
MALLOC_DECLARE( M_MBGCLOCK );
- #define _pcps_kmalloc( _sz ) malloc( _sz, M_MBGCLOCK, M_NOWAIT | M_ZERO )
- #define _pcps_kfree( _p, _sv ) free( _p, M_MBGCLOCK )
+ #define _pcps_kmalloc( _sz ) malloc( _sz, M_MBGCLOCK, M_NOWAIT | M_ZERO )
+ #define _pcps_kfree( _p, _sv ) free( _p, M_MBGCLOCK )
- #define MBG_SPINLOCK struct mtx
- #define _pcps_spin_lock_init( _spl ) mtx_init( _spl, "mbgclock_spin", NULL, MTX_SPIN )
- #define _pcps_spin_lock( _spl ) mtx_lock_spin( _spl )
- #define _pcps_spin_unlock( _spl ) mtx_unlock_spin( _spl )
+ #define MBG_SPINLOCK struct mtx
+ #define _pcps_spin_lock_init( _spl ) mtx_init( _spl, "mbgclock_spin", NULL, MTX_SPIN )
+ #define _pcps_spin_lock_destroy( _spl ) mtx_destroy( _spl )
+ #define _pcps_spin_lock( _spl ) mtx_lock_spin( _spl )
+ #define _pcps_spin_unlock( _spl ) mtx_unlock_spin( _spl )
- #define MBG_SYS_MUTEX struct mtx
- #define _pcps_mutex_init( _pmtx ) mtx_init( _pmtx, "mbgclock_sema", NULL, MTX_DEF )
- #define _pcps_mutex_acquire( _pmtx ) mtx_lock( _pmtx )
- #define _pcps_mutex_release( _pmtx ) mtx_unlock( _pmtx )
+ #define MBG_SYS_MUTEX struct mtx
+ #define _pcps_mutex_init( _pmtx ) mtx_init( _pmtx, "mbgclock_sema", NULL, MTX_DEF )
+ #define _pcps_mutex_destroy( _pmtx ) mtx_destroy( _pmtx )
+ #define _pcps_mutex_acquire( _pmtx ) mtx_lock( _pmtx )
+ #define _pcps_mutex_release( _pmtx ) mtx_unlock( _pmtx )
#elif defined( MBG_TGT_NETBSD )
// For older NetBSD versions which do not suppport the calls
// used below, see 'man 9 malloc'.
- #define _pcps_kmalloc( _sz ) kmem_alloc( _sz, KM_NOSLEEP )
- #define _pcps_kfree( _p, _sz ) kmem_free( _p, _sz )
+ #define _pcps_kmalloc( _sz ) kmem_alloc( _sz, KM_NOSLEEP )
+ #define _pcps_kfree( _p, _sz ) kmem_free( _p, _sz )
// The API used below has been introduced in NetBSD 5.0
// For earlier NetBSD versions see 'man 9 lockinit'.
#define MBG_SPINLOCK kmutex_t
#define _pcps_spin_lock_init( _spl ) mutex_init( _spl, MUTEX_DEFAULT, IPL_HIGH )
- #define _pcps_spin_lock_deinit( _spl ) mutex_destroy( _spl )
+ #define _pcps_spin_lock_destroy( _spl ) mutex_destroy( _spl )
#define _pcps_spin_lock( _spl ) mutex_spin_enter( _spl )
#define _pcps_spin_unlock( _spl ) mutex_spin_exit( _spl )
#define MBG_SYS_MUTEX kmutex_t
#define _pcps_mutex_init( _pmtx ) mutex_init( _pmtx, MUTEX_DEFAULT, IPL_NONE )
- #define _pcps_mutex_deinit( _spl ) mutex_destroy( _spl )
+ #define _pcps_mutex_destroy( _spl ) mutex_destroy( _spl )
#define _pcps_mutex_acquire( _pmtx ) mutex_enter( _pmtx )
#define _pcps_mutex_release( _pmtx ) mutex_exit( _pmtx )
#elif defined( MBG_TGT_WIN32 )
- #define _pcps_kmalloc( _sz ) ExAllocatePool( PagedPool, _sz )
- #define _pcps_kfree( _p, _sz ) ExFreePool( _p )
+ #define _pcps_kmalloc( _sz ) ExAllocatePool( PagedPool, _sz )
+ #define _pcps_kfree( _p, _sz ) ExFreePool( _p )
- #define MBG_SPINLOCK KSPIN_LOCK
- #define _pcps_spin_lock_init( _spl ) KeInitializeSpinLock( _spl )
- #define _pcps_spin_lock( _spl ) KeAcquireSpinLockAtDpcLevel( _spl )
- #define _pcps_spin_unlock( _spl ) KeReleaseSpinLockFromDpcLevel( _spl )
+ #define MBG_SPINLOCK KSPIN_LOCK
+ #define _pcps_spin_lock_init( _spl ) KeInitializeSpinLock( _spl )
+ #define _pcps_spin_lock_destroy( _spl ) _nop_macro_fnc()
+ #define _pcps_spin_lock( _spl ) KeAcquireSpinLockAtDpcLevel( _spl )
+ #define _pcps_spin_unlock( _spl ) KeReleaseSpinLockFromDpcLevel( _spl )
- #define MBG_SYS_MUTEX FAST_MUTEX
- #define _pcps_mutex_init( _pmtx ) ExInitializeFastMutex( _pmtx )
- #define _pcps_mutex_acquire( _pmtx ) ExAcquireFastMutex( _pmtx )
- #define _pcps_mutex_release( _pmtx ) ExReleaseFastMutex( _pmtx )
+ #define MBG_SYS_MUTEX FAST_MUTEX
+ #define _pcps_mutex_init( _pmtx ) ExInitializeFastMutex( _pmtx )
+ #define _pcps_mutex_acquire( _pmtx ) ExAcquireFastMutex( _pmtx )
+ #define _pcps_mutex_release( _pmtx ) ExReleaseFastMutex( _pmtx )
#endif
@@ -563,20 +572,22 @@
// If the macros below have not yet been defined then define some dummies:
-#if !defined( MBG_SYS_MUTEX )
+#if !defined( MBG_SPINLOCK )
- #define _pcps_mutex_init( _pmtx ) _nop_macro_fnc()
- #define _pcps_mutex_acquire( _pmtx ) _nop_macro_fnc()
- #define _pcps_mutex_release( _pmtx ) _nop_macro_fnc()
+ #define _pcps_spin_lock_init( _spl ) _nop_macro_fnc()
+ #define _pcps_spin_lock_destroy( _spl ) _nop_macro_fnc()
+ #define _pcps_spin_lock( _spl ) _nop_macro_fnc()
+ #define _pcps_spin_unlock( _spl ) _nop_macro_fnc()
#endif
-#if !defined( MBG_SPINLOCK )
+#if !defined( MBG_SYS_MUTEX )
- #define _pcps_spin_lock_init( _spl ) _nop_macro_fnc()
- #define _pcps_spin_lock( _spl ) _nop_macro_fnc()
- #define _pcps_spin_unlock( _spl ) _nop_macro_fnc()
+ #define _pcps_mutex_init( _pmtx ) _nop_macro_fnc()
+ #define _pcps_mutex_destroy( _pmtx ) _nop_macro_fnc()
+ #define _pcps_mutex_acquire( _pmtx ) _nop_macro_fnc()
+ #define _pcps_mutex_release( _pmtx ) _nop_macro_fnc()
#endif
diff --git a/src/external/bsd/meinberg/mbgclock/mbgclock_main.c b/src/external/bsd/meinberg/mbgclock/mbgclock_main.c
index 166bbf0..ca9c4a3 100755
--- a/src/external/bsd/meinberg/mbgclock/mbgclock_main.c
+++ b/src/external/bsd/meinberg/mbgclock/mbgclock_main.c
@@ -1,5 +1,5 @@
/*
- * $Header: /repository/clkdrv/bsd/netbsd/soft/mbgtools-nbsd/mbgclock/rcs/mbgclock_main.c 1.1.1.4 2011/03/31 07:21:03 martin TRASH martin $
+ * $Header: /repository/clkdrv/bsd/netbsd/soft/mbgtools-nbsd/mbgclock/rcs/mbgclock_main.c 1.1.1.5 2011/04/01 12:54:09 martin TRASH $
*
* NetBSD Meinberg mbgclock driver, Frank Kardel
*
@@ -537,11 +537,8 @@ mbgclock_detach(struct device *self, int flags)
/* XXX insure not outstanding requests */
mbg_dealloc_rsrcs( psc );
- /* XXX mem leak on detach
-
if ( psc->pddev != NULL )
pcps_free_ddev( psc->pddev );
- */
psc->pddev = NULL;