summaryrefslogtreecommitdiff
path: root/test/regression/interoperability_test/test_frame/tls_test_instance_create.c
blob: c6ad90918266730afd907a116923f2268abe83ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/***************************************************************************/
/* Copyright (c) 2024 Microsoft Corporation                                */
/* Copyright (c) 2026 Eclipse ThreadX contributors                         */
/*                                                                         */
/* This program and the accompanying materials are made available under    */
/* the terms of the MIT License which is available at                      */
/* https://opensource.org/licenses/MIT.                                    */
/*                                                                         */
/* SPDX-License-Identifier: MIT                                            */
/***************************************************************************/

#include "tls_test_frame.h"

/* Construct a tls test instance. */
INT tls_test_instance_create( TLS_TEST_INSTANCE** instance_ptr_ptr, CHAR* instance_name, InstanceTestEntryFunc test_entry, UINT delay, UINT timeout, UINT shared_buffer_size, VOID* reserved)
{
    /* Check parameters. */
    return_value_if_fail( NULL != instance_ptr_ptr, TLS_TEST_INVALID_POINTER);
    return_value_if_fail( NULL != instance_name, TLS_TEST_INVALID_POINTER);
    return_value_if_fail( NULL != test_entry, TLS_TEST_INVALID_POINTER);

    /* Allocate shared memory of this test instance and its shared buffer. */
    TLS_TEST_INSTANCE* instance_ptr;
    instance_ptr = mmap( NULL, sizeof(TLS_TEST_INSTANCE) + shared_buffer_size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, 0, 0);
    return_value_if_fail( NULL != instance_ptr, TLS_TEST_UNABLE_TO_CREATE_SHARED_MEMORY);

    /* Return instance ptr. */
    *instance_ptr_ptr = instance_ptr;

    /* Initialize members related to shared buffer. */
    instance_ptr -> tls_test_shared_buffer_size = shared_buffer_size;
    instance_ptr -> tls_test_shared_buffer_offset = 0;
    if ( shared_buffer_size)
    {
        instance_ptr -> tls_test_shared_buffer = (VOID*)( (CHAR*)instance_ptr + sizeof(TLS_TEST_INSTANCE));
    }
    else
    {
        instance_ptr -> tls_test_shared_buffer = NULL;
    }

    /* Initialize other members. */
    instance_ptr -> tls_test_instance_name = instance_name;
    instance_ptr -> tls_test_entry = test_entry;
    instance_ptr -> tls_test_delay = delay;
    if ( !timeout)
    {
        /* Assign timeout as default value, if timeout is 0. */
        instance_ptr -> tls_test_timeout = TLS_TEST_PROCESS_DEFAULT_TIMEOUT;
    }
    else
    {
        instance_ptr -> tls_test_timeout = timeout;
    }

    instance_ptr -> tls_test_instance_identify = 0;
    instance_ptr -> tls_test_instance_status = TLS_TEST_INSTANCE_STATUS_INITIALIZED;
    instance_ptr -> tls_test_next_instance_ptr = NULL;

    return TLS_TEST_SUCCESS;
}