Home : Platform Support Library | XS1 Locks

Description

<TODO>

Interface Functions

<TODO>

Example Usage

<TODO>

Source Files

xsystem_xs1_locks.h XS1 U-series multi-channel ADC interface
xsystem_xs1_locks.xc XS1 U-series multi-channel ADC implementation

Source Listings

xsystem_xs1_locks.h

#ifndef XSYSTEM_XS1_LOCKS__INCLUDED
#define XSYSTEM_XS1_LOCKS__INCLUDED

#include "xsystem_types.h"

typedef unsigned int xlock_t;

xlock_t xsystem_lock_alloc  ( void );
void    xsystem_lock_acquire( xlock_t lock );
void    xsystem_lock_release( xlock_t lock );
void    xsystem_lock_free   ( xlock_t lock );

#endif

xsystem_xs1_locks.xc

#include "xsystem_xs1_locks.h"

xlock_t xsystem_lock_alloc  ( void )         { unsigned int x; asm("getr %0, 5" : "=r"(x) ); return x;}
void    xsystem_lock_acquire( xlock_t lock ) { asm("in %0, res[%0]" :: "r"(lock),"r"(lock)); }
void    xsystem_lock_release( xlock_t lock ) { asm("out res[%0], %0" :: "r"(lock),"r"(lock));}
void    xsystem_lock_free   ( xlock_t lock ) { asm("freer res[%0]" :: "r"(lock),"r"(lock));  }