prima: WLAN Driver Release 3.1.7.9
This is the initial release of the Prima WLAN Driver
diff --git a/CORE/VOSS/inc/vos_event.h b/CORE/VOSS/inc/vos_event.h
new file mode 100644
index 0000000..515cefa
--- /dev/null
+++ b/CORE/VOSS/inc/vos_event.h
@@ -0,0 +1,270 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#if !defined( __VOS_EVENT_H )
+#define __VOS_EVENT_H
+
+/**=========================================================================
+
+ \file vos_event.h
+
+ \brief virtual Operating System Services (vOSS) Events
+
+ Definitions for vOSS Events
+
+ Copyright 2008 (c) Qualcomm, Incorporated. All Rights Reserved.
+
+ Qualcomm Confidential and Proprietary.
+
+ ========================================================================*/
+
+/* $Header$ */
+
+/*--------------------------------------------------------------------------
+ Include Files
+ ------------------------------------------------------------------------*/
+#include "vos_status.h"
+#include "vos_types.h"
+#include "i_vos_event.h"
+
+/*--------------------------------------------------------------------------
+ Preprocessor definitions and constants
+ ------------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/*--------------------------------------------------------------------------
+ Type declarations
+ ------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------
+ Function declarations and documenation
+ ------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------
+
+ \brief vos_event_init() - initialize a vOSS event
+
+ The \a vos_lock_event() function initializes the specified event. Upon
+ successful initialization, the state of the event becomes initialized
+ and not 'signaled.
+
+ An event must be initialized before it may be used in any other lock
+ functions.
+
+ Attempting to initialize an already initialized event results in
+ a failure.
+
+ \param lock - pointer to the opaque event object to initialize
+
+ \return VOS_STATUS_SUCCESS - event was successfully initialized and
+ is ready to be used.
+
+ VOS_STATUS_E_RESOURCES - System resources (other than memory)
+ are unavailable to initilize the event
+
+ VOS_STATUS_E_NOMEM - insufficient memory exists to initialize
+ the event
+
+ VOS_STATUS_E_BUSY - The implementation has detected an attempt
+ to reinitialize the object referenced by event, a previously
+ initialized, but not yet destroyed, event.
+
+ VOS_STATUS_E_FAULT - event is an invalid pointer.
+ \sa
+
+ -------------------------------------------------------------------------*/
+VOS_STATUS vos_event_init( vos_event_t *event );
+
+/*--------------------------------------------------------------------------
+
+ \brief vos_event_set() - set a vOSS event
+
+ The state of the specified event is set to 'signalled by calling
+ \a vos_event_set(). The state of the event remains signalled until an
+ explicit call to vos_event_reset().
+
+ Any threads waiting on the event as a result of a vos_event_wait() will
+ be unblocked and available to be scheduled for execution when the event
+ is signaled by a call to \a vos_event_set().
+
+ \param event - the event to set to the signalled state
+
+ \return VOS_STATUS_SUCCESS - the event was successfully signalled.
+
+ VOS_STATUS_E_INVAL - The value specified by event does not refer
+ to an initialized event object.
+
+ VOS_STATUS_E_FAULT - event is an invalid pointer.
+
+ \sa
+
+ -------------------------------------------------------------------------*/
+VOS_STATUS vos_event_set( vos_event_t * event );
+
+
+/*--------------------------------------------------------------------------
+
+ \brief vos_event_reset() - reset a vOSS event
+
+ The state of the specified event is set to 'NOT signalled' by calling
+ \a vos_event_reset(). The state of the event remains NOT signalled until an
+ explicit call to vos_event_set().
+
+ This function sets the event to a NOT signalled state even if the event was
+ signalled multiple times before being signaled.
+
+ \param event - the event to set to the NOT signalled state
+
+ \return VOS_STATUS_SUCCESS - the event state was successfully change to
+ NOT signalled.
+
+ VOS_STATUS_E_INVAL - The value specified by event does not refer
+ to an initialized event object.
+
+ VOS_STATUS_E_FAULT - event is an invalid pointer.
+
+ \sa
+
+ -------------------------------------------------------------------------*/
+VOS_STATUS vos_event_reset( vos_event_t * event );
+
+
+/*--------------------------------------------------------------------------
+
+ \brief vos_event_destroy() - Destroy a vOSS event
+
+ The \a vos_event_destroy() function shall destroy the event object
+ referenced by event. After a successful return from \a vos_event_destroy()
+ the event object becomes, in effect, uninitialized.
+
+ A destroyed event object can be reinitialized using vos_event_init();
+ the results of otherwise referencing the object after it has been destroyed
+ are undefined. Calls to vOSS event functions to manipulate the lock such
+ as vos_event_set() will fail if the event is destroyed. Therefore,
+ don't use the event after it has been destroyed until it has
+ been re-initialized.
+
+ \param event - the event object to be destroyed.
+
+ \return VOS_STATUS_SUCCESS - event was successfully destroyed.
+
+ VOS_STATUS_E_BUSY - The implementation has detected an attempt
+ to destroy the object referenced by event while it is still being
+ referenced (there are threads waiting on this event)
+
+ VOS_STATUS_E_INVAL - The value specified by event is invalid.
+
+ VOS_STATUS_E_FAULT - event is an invalid pointer.
+ \sa
+
+ -------------------------------------------------------------------------*/
+VOS_STATUS vos_event_destroy( vos_event_t *event );
+
+// TODO: this is being removed and a stub exists currently to avoid
+// compiler errors
+VOS_STATUS vos_wait_events( vos_event_t *events, v_U8_t numEvents,
+ v_U32_t timeout, v_U8_t *pEventIndex );
+
+/*----------------------------------------------------------------------------
+
+ \brief vos_wait_single_event() - Waits for a single event to be set.
+
+ This API waits for the event to be set.
+
+ \param pEvent - pointer to an event to wait on.
+
+ \param timeout - Timeout value (in milliseconds). This function returns
+ if this interval elapses, regardless if any of the events have
+ been set. An input value of 0 for this timeout parameter means
+ to wait infinitely, meaning a timeout will never occur.
+
+ \return VOS_STATUS_SUCCESS - the wait was satisifed by the event being
+ set.
+
+ VOS_STATUS_E_TIMEOUT - the timeout interval elapsed before the
+ event was set.
+
+ VOS_STATUS_E_INVAL - The value specified by event is invalid.
+
+ VOS_STATUS_E_FAULT - pEvent is an invalid pointer.
+
+ \sa vos_wait_multiple_events()
+
+ --------------------------------------------------------------------------*/
+VOS_STATUS vos_wait_single_event( vos_event_t *pEvent, v_U32_t timeout );
+
+/*----------------------------------------------------------------------------
+
+ \brief vos_wait_multiple_events() - Waits for event(s) to be set.
+
+ This API waits for any event in the input array of events to be
+ set. The caller is blocked waiting any event in the array to be
+ set or for the timeout to occur.
+
+ If multiple events in the array are set, only one event is identified
+ in the return from this call as satisfying the wait condition. The
+ caller is responsible for calling \a vos_wait_events() again to find
+ the other events that are set.
+
+ \param pEventList - pointer to an array of event pointers
+
+ \param numEvents - Number of events
+
+ \param timeout - Timeout value (in milliseconds). This function returns
+ if this interval elapses, regardless if any of the events have
+ been set. An input value of 0 for this timeout parameter means
+ to wait infinitely, meaning a timeout will never occur.
+
+ \param pEventIndex - This is a pointer to the location where the index of
+ the event in the event array that satisfied the wait because
+ the event was set.
+
+ \return VOS_STATUS_SUCCESS - the wait was satisifed by one of the events
+ in the event array being set. The index into the event arry
+ that satisfied the wait can be found at *pEventIndex.
+
+ VOS_STATUS_E_TIMEOUT - the timeout interval elapsed before any of
+ the events were set.
+
+ VOS_STATUS_E_INVAL - At least one of the values specified in the
+ event array refers to an uninitialized event object. The invalid
+ event is identified by the index in *pEventIndex. Note that only
+ the first uninitialized event is detected when this error is
+ returned.
+
+ VOS_STATUS_E_EMPTY - the events array is empty. This condition
+ is detected by numEvents being 0 on input.
+
+ VOS_STATUS_E_FAULT - event or pEventIndex is an invalid pointer.
+
+ \sa vos_wait_single_events()
+
+ --------------------------------------------------------------------------*/
+VOS_STATUS vos_wait_multiple_events( vos_event_t **pEventList, v_U8_t numEvents,
+ v_U32_t timeout, v_U8_t *pEventIndex );
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif // __VOSS_EVENT_H