View difference between Paste ID: pyLVzvvY and Xb8wiwey
SHOW: | | - or go back to the newest paste.
1
#ifdef HAVE_CONFIG_H
2
#include "config.h"
3
#endif
4
5
#include <sys/param.h>
6
7
#include <stdio.h>
8
#include <inttypes.h>
9
10
#include <rtems.h>
11
#include <rtems/libcsupport.h>
12
#include <rtems/score/schedulersmpimpl.h>
13
#include <rtems/score/smpbarrier.h>
14
#include <rtems/score/smplock.h>
15
16
#include "tmacros.h"
17
18
const char rtems_test_name[] = "SMPPESTI 8";
19
20
#define CPU_COUNT 3
21
22
#define MRSP_COUNT 4
23
24
static int flag;
25
26
typedef struct
27
{
28
    rtems_id main_task_id;
29
    rtems_id scheduler_ids[CPU_COUNT];
30-
    SMP_lock_Control switch_lock;
30+
31
    rtems_id task_id[3];
32
} test_context;
33
34
static test_context test_instance = {};
35-
static test_context test_instance = {
35+
36-
    .switch_lock = SMP_LOCK_INITIALIZER("test instance switch lock")};
36+
37
{
38
    TEST_BEGIN();
39
    test_context *ctx = &test_instance;
40
    uint32_t cpu_count = rtems_get_processor_count();
41
42
    rtems_status_code sc = rtems_semaphore_create(
43
        rtems_build_name('M', 'R', 'S', 'P'),
44
        1,
45
        RTEMS_MULTIPROCESSOR_RESOURCE_SHARING | RTEMS_BINARY_SEMAPHORE,
46
        9,
47
        &ctx->mrsp_id);
48
    rtems_test_assert(sc == RTEMS_SUCCESSFUL);
49
50
    printf("TASKS PRIORITY = 4\n");
51
    printf("RESOURCE PRIORITY = 9\n");
52
53
    printf("OBTAINING THE RESOURCE\n");
54
    sc = rtems_semaphore_obtain(ctx->mrsp_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
55
    printf("EXPECTED RESULT = 19 (INVALID PRIORITY).\nOBTAINED = %d\n", sc);
56
    rtems_test_assert(sc == 19);
57
58
    TEST_END();
59
    rtems_test_exit(0);
60
}
61
62
#define CONFIGURE_MICROSECONDS_PER_TICK 1000
63
64
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
65
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
66
67
#define CONFIGURE_MAXIMUM_TASKS 1
68
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
69
#define CONFIGURE_MAXIMUM_MRSP_SEMAPHORES 1
70
71
#define CONFIGURE_MAXIMUM_PROCESSORS CPU_COUNT
72
73
#define CONFIGURE_INIT_TASK_NAME rtems_build_name('M', 'A', 'I', 'N')
74
#define CONFIGURE_INIT_TASK_PRIORITY 4
75
76
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
77
78
#define CONFIGURE_INIT
79
80
#include <rtems/confdefs.h>