Op Code (Hex) | Extender | Operand 1 | Operand 2 | Operand 3 | Operand [4-5] |
---|---|---|---|---|---|
TESTULA 10E7 |
|
Available authority template receiver
|
System object
|
Test options template
|
|
| |||||
TESTULAB 1CE7 | Branch options | Available authority template receiver | System object | Required authority template | Branch targets |
| |||||
TESTULAI 18E7 | Indicator options | Available authority template receiver | System object | Required authority template | Indicator targets |
Operand 2: System pointer.
Operand 3: Space pointer.
Operand 4-5:
Bound program access | ||||||
---|---|---|---|---|---|---|
The return code will be set as follows:
This built-in function is used to provide support for the branch and indicator forms of the TESTULA instruction. The user must specify code to process the return code and perform the desired branching or indicator setting. |
This instruction verifies that the object authorities and/or ownership rights specified by operand 3 are available to the user list specified by operand 3 for the object specified by operand 2. The user list consists of a governing user profile and a list of group profiles for a thread. The profiles can be specified either by system pointers, or a uid for the user profile and a gid for the group profiles. Any program adopted user profiles for the current thread are not included in the authority verification process when this instruction is used.
If operand 1 is not null, all of the authorities and/or ownership specified by operand 3 that are currently available to the user list are returned in operand 1.
If the required authority is available, one of the following occurs:
The required authorities and/or ownership are specified by the required authority field of operand 3. This field includes a test option that indicates whether all of the specified authorities are required or whether any one or more of the specified authorities is sufficient. This option can be used, for example, to test for operational authority by coding a template value of hex 0F01 in operand 3. Using the any option does not affect what is returned in operand 1. If operand 1 is not null and the any option is specified, all of the authorities specified by operand 3 that are available to the user list are returned in operand 1.
If operand 1 is not null, it provides addressability
to a template which contains a list of available authorization templates
and has the following format:
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
0 | 0 |
| Materialization size specification |
| Char(8) | ||||||||
0 | 0 |
| Number of bytes provided |
| Bin(4) | ||||||||
4 | 4 |
| Number of bytes available |
| Bin(4) | ||||||||
8 | 8 |
| Number of authorization templates returned |
| Bin(2) | ||||||||
10 | A |
| Reserved |
| Char(6) | ||||||||
16 | 10 |
| Authorization templates |
| [*] Char(2) | ||||||||
16 | 10 |
| Object control |
| Bit 0 | ||||||||
16 | 10 |
| Object management |
| Bit 1 | ||||||||
16 | 10 |
| Authorized pointer |
| Bit 2 | ||||||||
16 | 10 |
| Space authority |
| Bit 3 | ||||||||
16 | 10 |
| Retrieve |
| Bit 4 | ||||||||
16 | 10 |
| Insert |
| Bit 5 | ||||||||
16 | 10 |
| Delete |
| Bit 6 | ||||||||
16 | 10 |
| Update |
| Bit 7 | ||||||||
16 | 10 |
| Ownership (1 = yes) |
| Bit 8 | ||||||||
16 | 10 |
| Excluded |
| Bit 9 | ||||||||
16 | 10 |
| Authority list management |
| Bit 10 | ||||||||
16 | 10 |
| Execute |
| Bit 11 | ||||||||
16 | 10 |
| Alter |
| Bit 12 | ||||||||
16 | 10 |
| Reference |
| Bit 13 | ||||||||
16 | 10 |
| Reserved (binary 0) |
| Bits 14-15 | ||||||||
* | * |
| --- End --- |
|
|
The first 4 bytes of the template identify the total number of bytes provided for use by the instruction. The value is supplied as input to the instruction and is not modified by the instruction. A value of less than 8 causes the materialization length invalid (hex 3803) exception to be signaled.
The second 4 bytes of the template identify the total number of bytes available to be materialized. The instruction materializes as many bytes as can be contained in the area specified as the receiver. If the byte area identified by the receiver is greater than that required to contain the information requested, then the excess bytes are unchanged. No exceptions (other than the materialization length invalid (hex 3803) exception) are signaled.
The number of authorization templates returned field is how many authorization templates were returned in the space provided. This does not indicate the total possible that could be returned. A maximum of one authorization template will be returned.
Operand 2 identifies the object for which authority is to be tested. The program adopted and propagated user profiles for any invocations of the current thread will not be included in the authority verification process of the user list.
Operand 3 identifies the profiles to be used in the authority
verification process. The profiles or users may be indicated
either by uid/gid or by system pointer, but not both in one
request. A user profile (system pointer
or uid) must always be specified
and the number of group profiles (or gids) may be zero
or more, but not negative. If the number of group profiles (or gids) is
negative or greater than 17, the template value invalid (hex 3801) exception
will be signaled.
The format of the test options template (operand 3)
is as follows:
Offset | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||||||
0 | 0 |
| Number of group profiles |
| Bin(2) | ||||||||||||
2 | 2 |
| Required authority |
| Char(2) | ||||||||||||
4 | 4 |
| User indicator |
| Char(1) | ||||||||||||
|
|
|
| ||||||||||||||
5 | 5 |
| Test flags |
| Char(1) | ||||||||||||
5 | 5 |
| Ignore pointer authority |
| Bit 0 | ||||||||||||
5 | 5 |
| Reserved |
| Bits 1-7 | ||||||||||||
6 | 6 |
| Reserved (binary 0) |
| Char(10) | ||||||||||||
16 | 10 |
| --- End --- |
|
|
The ignore pointer authority bit indicates whether the authority stored in the operand 2 system pointer should be ignored when testing the user list's authority to the object.
Immediately following this information will be the identification of the user profile and the group profile list. The first entry always identifies the user to be the user profile followed by a list of the users in the group profile list. The number of users in the list is indicated by the number of group profiles field. The format of the identification is either in system pointers or in uid/gids as specified by the user indicator field.
If the option for system pointers is selected, the user identification
will have the following format.
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
0 | 0 |
| User profile |
| System pointer | ||||||||
16 | 10 |
| --- End --- |
|
|
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
0 | 0 |
| Group profile |
| System pointer | ||||||||
16 | 10 |
| --- End --- |
|
|
If the option for uid/gid is selected, the user identification
will have the following format.
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
0 | 0 |
| User profile (uid) |
| UBin(4) | ||||||||
4 | 4 |
| --- End --- |
|
|
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
0 | 0 |
| Group profile (gid) |
| UBin(4) | ||||||||
4 | 4 |
| --- End --- |
|
|
The format for the required authority field
(operand 3) is as follows: (1 = authorized)
Offset | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||||||
0 | 0 |
| Authorization template |
| Char(2) | ||||||||||||
0 | 0 |
| Object control |
| Bit 0 | ||||||||||||
0 | 0 |
| Object management |
| Bit 1 | ||||||||||||
0 | 0 |
| Authorized pointer |
| Bit 2 | ||||||||||||
0 | 0 |
| Space authority |
| Bit 3 | ||||||||||||
0 | 0 |
| Retrieve |
| Bit 4 | ||||||||||||
0 | 0 |
| Insert |
| Bit 5 | ||||||||||||
0 | 0 |
| Delete |
| Bit 6 | ||||||||||||
0 | 0 |
| Update |
| Bit 7 | ||||||||||||
0 | 0 |
| Ownership (1 = yes) |
| Bit 8 | ||||||||||||
0 | 0 |
| Excluded |
| Bit 9 | ||||||||||||
0 | 0 |
| Authority list management |
| Bit 10 | ||||||||||||
0 | 0 |
| Execute |
| Bit 11 | ||||||||||||
0 | 0 |
| Alter |
| Bit 12 | ||||||||||||
0 | 0 |
| Reference |
| Bit 13 | ||||||||||||
0 | 0 |
| Reserved (binary 0) |
| Bit 14 | ||||||||||||
0 | 0 |
| Test option |
| Bit 15 | ||||||||||||
|
|
|
| ||||||||||||||
2 | 2 |
| --- End --- |
|
|
This instruction will tolerate a damaged object referenced by operand 2 when the reference is a resolved pointer. The instruction will not tolerate damaged contexts or programs when resolving pointers. Damaged user profiles encountered during the authority verification processing result in the signaling of the authority verification terminated due to damaged object (hex 1005) exception.
This instruction will not tolerate destroyed profiles or invalid system pointers/uid/gids to the users specified in operand 3. If system pointers are specified and any of them are null or do not point to a user profile, or if the uid or any of the gids are not in use or the user profile for it is destroyed, the authority verification terminated due to destroyed object (hex 2207) exception will be signaled.
06 Addressing
08 Argument/Parameter
0A Authorization
10 Damage Encountered
1A Lock State
1C Machine-Dependent
20 Machine Support
22 Object Access
24 Pointer Specification
2C Program Execution
2E Resource Control Limit
32 Scalar Specification
36 Space Management
38 Template Specification
44 Protection Violation