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.

66 lines
2.3 KiB

/*
* Copyright 2002-2019 Intel Corporation.
*
* This software is provided to you as Sample Source Code as defined in the accompanying
* End User License Agreement for the Intel(R) Software Development Products ("Agreement")
* section 1.L.
*
* 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.
*/
#include <string>
using std::string;
#define EXPORT_SYM extern "C"
// Type of the test, indicates the following:
// 1. Which thread (main/secondary) is a zombie thread.
// 2. Is the thread turn into a zombie thread in the first time the first time Pin
// reattach to the application.
// The tool needs to conduct some extra checks in case the test type is:
// TEST_TYPE_MAIN_THREAD_ZOMBIE_IN_SECOND_REATTACH. (in order to ensure that when Pin tries
// to reattach to the application the main thread is already turned into a zombie thread.
enum TEST_TYPE
{
TEST_TYPE_DEFAULT = 0, // 0
TEST_TYPE_MAIN_THREAD_ZOMBIE_IN_REATTACH, // 1
TEST_TYPE_SECONDARY_THREAD_ZOMBIE_IN_REATTACH, // 2
};
// The tool puts an analysis routine on this function in order to retrieve
// the type of the test.
EXPORT_SYM void NotifyTestType(TEST_TYPE testType = TEST_TYPE_DEFAULT);
// The tool puts an analysis routine on this function in order to retrieve
// the pid of the zombie thread
EXPORT_SYM void NotifyZombiePid(pid_t pid);
// Maximum pid length
static const int MAX_SIZE = 128;
// Check if a thread is a zombie thread.
// @param[in] tid - thread system id.
bool isZombie(pid_t tid);
// Check if Pin gave a message already that it can't attach to the application since the main thread is a zombie thread.
// @param[in] fileName-the message that Pin can't attach to the application will be redirected to this file.
bool NotifyUserPinUnableToAttach(string fileName);
/**************************************************
* Possible exit status *
**************************************************/
enum ExitType {
RES_SUCCESS = 0, // 0
RES_FORK_FAILED, // 1
RES_EXEC_FAILED, // 2
RES_LOAD_FAILED, // 3
RES_PIPE_CREATION_ERROR, // 4
RES_PIPE_ERROR, // 5
RES_INVALID_ARGS // 6
};