diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-10-01 15:10:45 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-10-04 08:50:22 +0200 |
commit | 83d381e0a64b20f4852e5035400f512305d7c535 (patch) | |
tree | c638bb4a2aac91e916748f4a3ade330d9724cdab | |
parent | items: Add support for arguments in substitutions (diff) | |
download | rtems-central-83d381e0a64b20f4852e5035400f512305d7c535.tar.bz2 |
spec: Improve rtems_task_set_affinity() spec
-rw-r--r-- | spec/rtems/task/req/set-affinity.yml | 145 |
1 files changed, 116 insertions, 29 deletions
diff --git a/spec/rtems/task/req/set-affinity.yml b/spec/rtems/task/req/set-affinity.yml index 570f0a92..b331f4a9 100644 --- a/spec/rtems/task/req/set-affinity.yml +++ b/spec/rtems/task/req/set-affinity.yml @@ -37,7 +37,7 @@ post-conditions: test-prologue: null - name: SetAffinity states: - - name: 'Yes' + - name: Set test-code: | #if defined(RTEMS_SMP) T_eq_sz( ctx->scheduler_log.header.recorded, 1 ); @@ -97,7 +97,7 @@ pre-conditions: associated with a task. test-epilogue: null test-prologue: null -- name: CPUSetKind +- name: CPUSetSize states: - name: Askew test-code: | @@ -105,43 +105,71 @@ pre-conditions: text: | While the ${../if/set-affinity:/params[1]/name} parameter is not an integral multiple of the size of long. + - name: Normal + test-code: | + ctx->cpusetsize = sizeof( ctx->cpuset_obj[ 0 ] ); + text: | + While the ${../if/set-affinity:/params[1]/name} parameter is an integral + multiple of the size of long, + while the ${../if/set-affinity:/params[1]/name} parameter is less than or + equal to the maximum processor set size storable in the system. - name: Huge test-code: | ctx->cpusetsize = sizeof( ctx->cpuset_obj ); - CPU_ZERO( &ctx->cpuset_obj[ 0 ] ); text: | While the ${../if/set-affinity:/params[1]/name} parameter is an integral - multiple of the size of long, while the - ${../if/set-affinity:/params[1]/name} and - ${../if/set-affinity:/params[2]/name} parameter specify a processor set - which exceeds the implementation limits. + multiple of the size of long, + while the ${../if/set-affinity:/params[1]/name} parameter is greater than + the maximum processor set size storable in the system. + test-epilogue: null + test-prologue: null +- name: CPUSetOnline + states: - name: Supported test-code: | - ctx->cpusetsize = sizeof( ctx->cpuset_obj[ 0 ] ); + /* Already prepared */ text: | - While the ${../if/set-affinity:/params[1]/name} parameter is an integral - multiple of the size of long, while the + While the intersection of the processor set specified by the ${../if/set-affinity:/params[1]/name} and - ${../if/set-affinity:/params[2]/name} parameter specify a processor set - which is an affinity set supported by the + ${../if/set-affinity:/params[2]/name} parameters and the set of online + processors represents an affinity set supported by the ${/glossary/scheduler-home:/term} of the task specified by the ${../if/set-affinity:/params[0]/name} parameter at some point during the ${../if/set-affinity:/name} call. - name: Unsupported test-code: | - ctx->cpusetsize = sizeof( ctx->cpuset_obj[ 0 ] ); CPU_CLR( 0, &ctx->cpuset_obj[ 0 ] ); text: | - While the ${../if/set-affinity:/params[1]/name} parameter is an integral - multiple of the size of long, while the + While the intersection of the processor set specified by the ${../if/set-affinity:/params[1]/name} and - ${../if/set-affinity:/params[2]/name} parameter specify a processor set - which is an affinity set not supported by the + ${../if/set-affinity:/params[2]/name} parameters and the set of online + processors represents an affinity set not supported by the ${/glossary/scheduler-home:/term} of the task specified by the ${../if/set-affinity:/params[0]/name} parameter at some point during the ${../if/set-affinity:/name} call. test-epilogue: null test-prologue: null +- name: CPUSetHuge + states: + - name: NotZero + test-code: | + /* Already prepared */ + text: | + While the processor set specified by the + ${../if/set-affinity:/params[1]/name} and + ${../if/set-affinity:/params[2]/name} parameters contains at least one + processor which is not storable in a processor set supported by the + system. + - name: Zero + test-code: | + CPU_ZERO( &ctx->cpuset_obj[ 1 ] ); + text: | + While the processor set specified by the + ${../if/set-affinity:/params[1]/name} and + ${../if/set-affinity:/params[2]/name} parameters contains no processor + which is not storable in a processor set supported by the system. + test-epilogue: null + test-prologue: null - name: CPUSet states: - name: Valid @@ -233,13 +261,53 @@ text: ${.:text-template} transition-map: - enabled-by: true post-conditions: - Status: Ok - SetAffinity: 'Yes' + Status: + - if: + pre-conditions: + CPUSetSize: Askew + then: InvNum + - if: + pre-conditions: + CPUSetOnline: Unsupported + then: InvNum + - else: Ok + SetAffinity: + - if: + post-conditions: + Status: Ok + then: Set + - else: Nop + pre-conditions: + Id: + - Task + CPUSetSize: + - Askew + - Normal + CPUSetOnline: all + CPUSetHuge: N/A + CPUSet: + - Valid +- enabled-by: true + post-conditions: + Status: + - if: + pre-conditions: + CPUSetOnline: Unsupported + then: InvNum + - else: Ok + SetAffinity: + - if: + post-conditions: + Status: Ok + then: Set + - else: Nop pre-conditions: Id: - Task - CPUSetKind: - - Supported + CPUSetSize: + - Huge + CPUSetOnline: all + CPUSetHuge: all CPUSet: - Valid - enabled-by: true @@ -247,8 +315,11 @@ transition-map: Status: InvAddr SetAffinity: Nop pre-conditions: - Id: all - CPUSetKind: N/A + Id: + - Task + CPUSetSize: all + CPUSetOnline: N/A + CPUSetHuge: N/A CPUSet: - 'Null' - enabled-by: true @@ -258,20 +329,36 @@ transition-map: pre-conditions: Id: - Invalid - CPUSetKind: N/A + CPUSetSize: + - Askew + - Normal + CPUSetOnline: N/A + CPUSetHuge: N/A CPUSet: - Valid - enabled-by: true post-conditions: - Status: InvNum + Status: InvId SetAffinity: Nop pre-conditions: Id: - - Task - CPUSetKind: - - Askew + - Invalid + CPUSetSize: - Huge - - Unsupported + CPUSetOnline: N/A + CPUSetHuge: all CPUSet: - Valid +- enabled-by: true + post-conditions: + Status: InvAddr + SetAffinity: Nop + pre-conditions: + Id: + - Invalid + CPUSetSize: all + CPUSetOnline: N/A + CPUSetHuge: N/A + CPUSet: + - 'Null' type: requirement |