Everything

sac_mem

Outline
Change access permission vector for memory object.
C format
 ER      sac_mem ( VP base, ACVCT *p_acvct );
Parameter(s)
I/O
Parameter
Description
I
 VP      base;
Memory object start address.
I
 ACVCT   *p_acvct;
Pointer to the packet containing the access permission vector.

[Access permission vector : ACVCT]
 typedef struct  acvct {
     ACPTN   acptn1;         /*Access permission pattern for operand-read*/
     ACPTN   acptn2;         /*Access permission pattern for operand-write*/
     ACPTN   acptn3;         /*Access permission pattern for execution*/
 } ACVCT;

Explanation
This service call can be called from tasks that belong to Trusted Domain.
This service call changes the access permission vector for the memory object started from the address specified by base to the content indicated by p_acvct.
Return value
Macro
Value
Description
E_OK
0
Normal completion.
E_PAR
-17
Parameter error.
- p_acvct == NULL
- acptn1 == acptn2 == acptn3 == 0
- Either of bits corresponding to the domain ID that is larger than the maximum domain ID (VTMAX_DOMAIN) of either acptn1, acptn2 or acptn3 is 1.
E_CTX
-25
Context error.
- This service call was issued in the CPU locked state.
- This service call was issued from non-task.
- This service call was issued in the status "PSW.IPL > kernel interrupt mask level".
E_MACV
-26
Memory access violation.
- Stack pointer points out of user stack for invoking task.
- The operand-read access to the area indicated by p_acvct has not been permitted to the invoking task.
E_OACV
-27
Object access violation.
- The invoking task does not belong to trusted domain.
- The number of memory objects from which the access is permitted to one domain exceeds 7.
E_NOEXS
-42
Non-existent object.
- The memory object started from the address specified by base has already been registered.