You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
5.7 KiB
173 lines
5.7 KiB
/*
|
|
* Copyright 2002-2019 Intel Corporation.
|
|
*
|
|
* This software and the related documents are Intel copyrighted materials, and your
|
|
* use of them is governed by the express license under which they were provided to
|
|
* you ("License"). Unless the License provides otherwise, you may not use, modify,
|
|
* copy, publish, distribute, disclose or transmit this software or the related
|
|
* documents without Intel's prior written permission.
|
|
*
|
|
* This software and the related documents are provided as is, with no express or
|
|
* implied warranties, other than those that are expressly stated in the License.
|
|
*/
|
|
|
|
// <COMPONENT>: os-apis
|
|
// <FILE-TYPE>: component public header
|
|
/// @file threads.h
|
|
|
|
/*!
|
|
* @defgroup OS_APIS_THREAD Threads
|
|
* @brief Contains thread-related os apis
|
|
*/
|
|
|
|
#ifndef OS_APIS_THREAD_H
|
|
#define OS_APIS_THREAD_H
|
|
|
|
#define OS_APIS_TLS_SLOT_TLS_AND_STACK_START_ADDRESS 4
|
|
#define OS_APIS_TLS_SLOT_TLS_AND_STACK_SIZE 5
|
|
|
|
/*! @ingroup OS_APIS_THREAD
|
|
* Create a new thread in the current process.
|
|
*
|
|
* @param[in] ThreadMainFunction Thread start address
|
|
* @param[in] ThreadParam Thread optional parameter
|
|
* @param[in] stackBottom The base address of the thread's stack.
|
|
* This argument can be NULL. In that case this function will
|
|
* allocate the stack according to the @b stackSize argument.
|
|
* @param[in] stackSize The size of the thread's stack.
|
|
* @param[out] td The descriptor of newly created thread.
|
|
*
|
|
* @retval OS_RETURN_CODE_NO_ERROR If the operation succeeded
|
|
* @retval OS_RETURN_CODE_THREAD_CREATE_FAILED If the operation Failed
|
|
* @return Operation status code.
|
|
*
|
|
* @par Availability:
|
|
* @b O/S: Windows, Linux & macOS*\n
|
|
* @b CPU: All\n
|
|
*/
|
|
OS_RETURN_CODE OS_CreateThread(VOID (*ThreadMainFunction)(VOID*), VOID *ThreadParam,
|
|
VOID* stackBottom, ADDRINT stackSize, NATIVE_TID* td);
|
|
|
|
/*! @ingroup OS_APIS_THREAD
|
|
* Causes a running thread to exit.
|
|
*
|
|
* @param[in] td Thread descriptor
|
|
*
|
|
* @retval OS_RETURN_CODE_NO_ERROR If the operation succeeded
|
|
* @retval OS_RETURN_CODE_THREAD_EXIT_FAILED If the operation Failed
|
|
* @return Operation status code.
|
|
*
|
|
* @par Availability:
|
|
* @b O/S: Windows, Linux & macOS*\n
|
|
* @b CPU: All\n
|
|
*/
|
|
OS_RETURN_CODE OS_ExitThread(NATIVE_TID td);
|
|
|
|
/*! @ingroup OS_APIS_THREAD
|
|
*
|
|
* This function clears a word and then exits the calling thread. It guaranteess that it will use only
|
|
* register state (no memory) once \a word is cleared.
|
|
*
|
|
* @param[in] code The thread exit code as passed from the caller
|
|
* @param[out] dwordToReset This memory location is cleared (set to zero).
|
|
*
|
|
* @retval OS_RETURN_CODE_THREAD_EXIT_FAILED If the operation Failed
|
|
* @return Operation status code.
|
|
*
|
|
* @par Availability:
|
|
* @b O/S: Linux & macOS*\n
|
|
* @b CPU: All\n
|
|
*/
|
|
OS_RETURN_CODE OS_ThreadExitAndClear(void* stackAddr, ADDRINT stackSize, INT32* dwordToReset);
|
|
|
|
/*! @ingroup OS_APIS_THREAD
|
|
* Suspends a running thread.
|
|
*
|
|
* @param[in] td Thread descriptor
|
|
*
|
|
* @retval OS_RETURN_CODE_NO_ERROR If the operation succeeded
|
|
* @retval OS_RETURN_CODE_THREAD_SUSPEND_FAILED If the operation Failed
|
|
* @return Operation status code.
|
|
*
|
|
* @par Availability:
|
|
* @b O/S: Windows, Linux & macOS*\n
|
|
* @b CPU: All\n
|
|
*/
|
|
OS_RETURN_CODE OS_SuspendThread(NATIVE_TID td);
|
|
|
|
/*! @ingroup OS_APIS_THREAD
|
|
* Resumes running thread.
|
|
*
|
|
* @param[in] td Thread descriptor
|
|
*
|
|
* @retval OS_RETURN_CODE_NO_ERROR If the operation succeeded
|
|
* @retval OS_RETURN_CODE_THREAD_RESUME_FAILED If the operation Failed
|
|
* @return Operation status code.
|
|
*
|
|
* @par Availability:
|
|
* @b O/S: Windows, Linux & macOS*\n
|
|
* @b CPU: All\n
|
|
*/
|
|
OS_RETURN_CODE OS_ResumeThread(NATIVE_TID td);
|
|
|
|
/*! @ingroup OS_APIS_THREAD
|
|
* Sends thread to sleep.
|
|
*
|
|
* @param[in] interval Interval to sleep in milli-seconds.
|
|
*
|
|
* @retval OS_RETURN_CODE_NO_ERROR If the operation succeeded
|
|
* @retval OS_RETURN_CODE_THREAD_SLEEP_FAILED If the operation Failed
|
|
* @return Operation status code.
|
|
*
|
|
* @par Availability:
|
|
* @b O/S: Windows, Linux & macOS*\n
|
|
* @b CPU: All\n
|
|
*/
|
|
OS_RETURN_CODE OS_Sleep(INT interval);
|
|
|
|
/*! @ingroup OS_APIS_THREAD
|
|
* Retrieves the current thread's handle.
|
|
*
|
|
* @param[out] id Address of handle container variable
|
|
*
|
|
* @retval OS_RETURN_CODE_NO_ERROR If the operation succeeded
|
|
* @retval OS_RETURN_CODE_THREAD_QUERY_FAILED If the operation Failed
|
|
* @return Operation status code.
|
|
*
|
|
* @par Availability:
|
|
* @b O/S: Windows, Linux & macOS*\n
|
|
* @b CPU: All\n
|
|
*/
|
|
OS_RETURN_CODE OS_GetTid(NATIVE_TID* id);
|
|
|
|
/*! @ingroup OS_APIS_THREAD
|
|
* Pre-empts the thread specified by the running thread.
|
|
*
|
|
* @retval OS_RETURN_CODE_NO_ERROR If the operation succeeded
|
|
* @retval OS_RETURN_CODE_THREAD_SLEEP_FAILED If the operation Failed
|
|
* @return Operation status code.
|
|
*
|
|
* @par Availability:
|
|
* @b O/S: Windows, Linux & macOS*\n
|
|
* @b CPU: All\n
|
|
*/
|
|
OS_RETURN_CODE OS_Yield(void);
|
|
|
|
/*! @ingroup OS_APIS_THREAD
|
|
* Raise an exception.
|
|
*
|
|
* @param[in] td Thread descriptor
|
|
* @param[in] code Exception type
|
|
*
|
|
* @retval OS_RETURN_CODE_NO_ERROR If the operation succeeded
|
|
* @retval OS_RETURN_CODE_THREAD_SLEEP_FAILED If the operation Failed
|
|
* @return Operation status code.
|
|
*
|
|
* @par Availability:
|
|
* @b O/S: Windows, Linux & macOS*\n
|
|
* @b CPU: All\n
|
|
*/
|
|
OS_RETURN_CODE OS_RaiseException(NATIVE_TID td, UINT32 code);
|
|
|
|
#endif // file guard
|