spe_ps_area_get - Map the problem state area specified by ps_area of the SPE context specified by spe to the thread's address space.
#include <libspe2.h>
void * spe_ps_area_get (spe_context_ptr_t spe, enum ps_area area)
Parameters | |
spe | The identifier of a specific SPE context. |
ps_area | The problem state area pointer to map. |
In order to obtain a problem state area pointer the specified SPE context must have been created with the SPE_MAP_PS flag set.
On success, a pointer to the requested problem state area is returned.
On error, NULL is returned and errno is set to indicate the error.
Possible errors include:
ESRCH | The specified SPE context is invalid. |
EACCES | Permission for direct access to the specified problem state area is denied or the SPE context was not created with memory-mapped problem state access. |
EINVAL | The specified problem state area is invalid.> |
ENOSYS | Access to the specified problem area for the specified SPE context is not supported by the operating system. |
The following are possible problem state values for the parameter ps_area:
Problem state value | Description |
SPE_MSSYNC_AREA | Return a pointer to the specified SPE's MFC multisource
synchronization register problem state area as defined by the following structure: typedef struct spe_mssync_area { unsigned int MFC_MSSync; } spe_mssync_area_t; |
SPE_MFC_COMMAND_AREA | Return a pointer to the specified SPE's MFC command
parameter and command queue control area as defined by the following structure:typedef struct spe_mfc_command_area { unsigned char reserved_0_3[4]; unsigned int MFC_LSA; unsigned int MFC_EAH; unsigned int MFC_EAL; unsigned int MFC_Size_Tag; union { unsigned int MFC_ClassID_CMD; unsigned int MFC_CMDStatus; }; unsigned char reserved_18_103[236]; unsigned int MFC_QStatus; unsigned char reserved_108_203[252]; unsigned int Prxy_QueryType; unsigned char reserved_208_21B[20]; unsigned int Prxy_QueryMask; unsigned char reserved_220_22B[12]; unsigned int Prxy_TagStatus; } spe_mfc_command_area_t; Note: The MFC_EAH and MFC_EAL registers can be written simultaneously
using a 64-bit store. Likewise, MFC_Size_Tag and MFC_ClassID_CMD registers
can be written simultaneously using a 64-bit store.
|
SPE_CONTROL_AREA | Return a pointer to the specified SPE's SPU control
area as defined by the following structure:typedef struct spe_spu_control_area { unsigned char reserved_0_3[4]; unsigned int SPU_Out_Mbox; unsigned char reserved_8_B[4]; unsigned int SPU_In_Mbox; unsigned char reserved_10_13[4]; unsigned int SPU_Mbox_Stat; unsigned char reserved_18_1B[4]; unsigned int SPU_RunCntl; unsigned char reserved_20_23[4]; unsigned int SPU_Status; unsigned char reserved_28_33[12]; unsigned int SPU_NPC; } spe_spu_control_area_t; |
SPE_SIG_NOTIFY_1_AREA | Return a pointer to the specified SPE's signal notification
area 1 as defined by the following structure:typedef struct spe_sig_notify_1_area { unsigned char reserved_0_B[12]; unsigned int SPU_Sig_Notify_1; } spe_sig_notify_1_area_t; |
SPE_SIG_NOTIFY_2_AREA | Return a pointer to the specified SPE's signal notification
area 2 as defined by the following structure:typedef struct spe_sig_notify_2_area { unsigned char reserved_0_B[12]; unsigned int SPU_Sig_Notify_2; } spe_sig_notify_2_area_t; |
spe_ls_area_get(3); spe_context_create(3)
The data structures specified above are defined in the header files of the library implementation.