mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-26 13:14:02 +08:00
rtems: Require RTEMS_PRIORITY for MrsP semaphores
MrsP semaphores are a generalization of the priority ceiling semaphores for SMP configurations. Priority ceiling semaphores are required to use the priority task wait queue discipline. Require this discipline also for MrsP semaphores. Close #4347.
This commit is contained in:
@@ -803,7 +803,8 @@ rtems_status_code rtems_semaphore_flush( rtems_id id );
|
||||
* sc = rtems_semaphore_create(
|
||||
* rtems_build_name( 'M', 'R', 'S', 'P' ),
|
||||
* 1,
|
||||
* RTEMS_BINARY_SEMAPHORE | RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
* RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
|
||||
* RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
* 1,
|
||||
* &semaphore_id
|
||||
* );
|
||||
|
||||
@@ -93,8 +93,8 @@ rtems_status_code rtems_semaphore_create(
|
||||
) {
|
||||
variant = SEMAPHORE_VARIANT_MUTEX_PRIORITY_CEILING;
|
||||
} else if (
|
||||
mutex_with_protocol
|
||||
== ( RTEMS_BINARY_SEMAPHORE | RTEMS_MULTIPROCESSOR_RESOURCE_SHARING )
|
||||
mutex_with_protocol == ( RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING )
|
||||
) {
|
||||
#if defined(RTEMS_SMP)
|
||||
variant = SEMAPHORE_VARIANT_MRSP;
|
||||
|
||||
@@ -41,8 +41,8 @@ static void Init( rtems_task_argument arg )
|
||||
sc = rtems_semaphore_create(
|
||||
rtems_build_name('M', 'R', 'S', 'P'),
|
||||
1,
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_BINARY_SEMAPHORE,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
1,
|
||||
&sem_id
|
||||
);
|
||||
|
||||
@@ -257,8 +257,8 @@ static void create_mrsp_sema(
|
||||
sc = rtems_semaphore_create(
|
||||
rtems_build_name('M', 'R', 'S', 'P'),
|
||||
1,
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_BINARY_SEMAPHORE,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
prio,
|
||||
id
|
||||
);
|
||||
@@ -744,8 +744,8 @@ static void test_mrsp_initially_locked_error(void)
|
||||
sc = rtems_semaphore_create(
|
||||
rtems_build_name('M', 'R', 'S', 'P'),
|
||||
0,
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_BINARY_SEMAPHORE,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
1,
|
||||
&id
|
||||
);
|
||||
|
||||
@@ -82,7 +82,8 @@ static void sticky_task(rtems_task_argument arg)
|
||||
sc = rtems_semaphore_create(
|
||||
rtems_build_name(' ', 'M', 'T', 'X'),
|
||||
1,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
2,
|
||||
&mtx_id
|
||||
);
|
||||
|
||||
@@ -53,8 +53,8 @@ static void test_mrsp_create_errors(void)
|
||||
sc = rtems_semaphore_create(
|
||||
rtems_build_name('M', 'R', 'S', 'P'),
|
||||
1,
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_BINARY_SEMAPHORE,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY
|
||||
| RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
UINT32_MAX,
|
||||
&id
|
||||
);
|
||||
@@ -63,36 +63,41 @@ static void test_mrsp_create_errors(void)
|
||||
create_not_defined(
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_COUNTING_SEMAPHORE
|
||||
| RTEMS_PRIORITY
|
||||
);
|
||||
|
||||
create_not_defined(
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_SIMPLE_BINARY_SEMAPHORE
|
||||
| RTEMS_PRIORITY
|
||||
);
|
||||
|
||||
create_not_defined(
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_BINARY_SEMAPHORE
|
||||
| RTEMS_FIFO
|
||||
);
|
||||
|
||||
create_not_defined(
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_INHERIT_PRIORITY
|
||||
| RTEMS_BINARY_SEMAPHORE
|
||||
| RTEMS_PRIORITY
|
||||
);
|
||||
|
||||
create_not_defined(
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_PRIORITY_CEILING
|
||||
| RTEMS_BINARY_SEMAPHORE
|
||||
| RTEMS_PRIORITY
|
||||
);
|
||||
|
||||
create_not_defined(
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_INHERIT_PRIORITY
|
||||
| RTEMS_BINARY_SEMAPHORE
|
||||
);
|
||||
|
||||
create_not_defined(
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_PRIORITY_CEILING
|
||||
| RTEMS_BINARY_SEMAPHORE
|
||||
);
|
||||
|
||||
create_not_defined(
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_INHERIT_PRIORITY
|
||||
| RTEMS_PRIORITY_CEILING
|
||||
| RTEMS_BINARY_SEMAPHORE
|
||||
| RTEMS_PRIORITY
|
||||
);
|
||||
}
|
||||
|
||||
@@ -116,8 +121,8 @@ static void test_mrsp_obtain_release(void)
|
||||
sc = rtems_semaphore_create(
|
||||
rtems_build_name('M', 'R', 'S', 'P'),
|
||||
1,
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_BINARY_SEMAPHORE,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
1,
|
||||
&id
|
||||
);
|
||||
@@ -202,8 +207,8 @@ static void test_mrsp_set_priority(void)
|
||||
sc = rtems_semaphore_create(
|
||||
rtems_build_name('M', 'R', 'S', 'P'),
|
||||
1,
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_BINARY_SEMAPHORE,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
1,
|
||||
&id
|
||||
);
|
||||
@@ -266,8 +271,8 @@ static void test_mrsp_timeout_and_not_owner_of_resource(void)
|
||||
sc = rtems_semaphore_create(
|
||||
rtems_build_name('M', 'R', 'S', 'P'),
|
||||
1,
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
|
||||
| RTEMS_BINARY_SEMAPHORE,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
1,
|
||||
&id
|
||||
);
|
||||
|
||||
@@ -501,7 +501,8 @@ static void test_many_classic_mrsp_body(
|
||||
sc = rtems_semaphore_create(
|
||||
rtems_build_name('T', 'E', 'S', 'T'),
|
||||
1,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY |
|
||||
RTEMS_MULTIPROCESSOR_RESOURCE_SHARING,
|
||||
1,
|
||||
&id
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user