spu_run | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <sys/spu.h> int spu_run(int fd, unsigned int *npc, unsigned int *event);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
L'exécution du code SPU se fait de manière synchrone, ce qui signifie que spu_run() bloque tant que la SPU est en cours d'exécution. S'il est nécessaire d'exécuter du code SPU en parallèle d'autres codes soit sur l'unité centrale principale, soit sur d'autres SPU, il faut d'abord créer un nouveau thread (par exemple, avec pthread_create(3)).
Lorsque spu_run() revient, la valeur actuelle du compteur programme SPU est écrite dans npc, ainsi, les appels successifs à spu_run() peuvent utiliser le même pointeur npc.
L'argument event fournit un tampon pour un code d'état étendu. Si le contexte SPU a été créé avec l'attribut SPU_CREATE_EVENTS_ENABLED, ce tampon sera rempli par le noyau Linux avant que spu_run() revienne.
Le code d'état peut être l'une (ou plus) des constantes suivantes :
NULL est une valeur valide pour l'argument event. Dans ce cas, les événements ne seront pas signifiés au processus appelant.
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
La valeur du registre spu_status est un masque de bits de codes d'état et éventuellement un code sur 14 bits renvoyé par l'instruction stop-and-signal de la SPU. Les masques de bits des codes d'états sont :
Si spu_run() n'a pas renvoyé d'erreur, un ou plusieurs bits parmi les 8 de poids faibles est (sont) toujours positionné(s).
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
VERSIONS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
EXEMPLE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <stdlib.h> #include <stdint.h> #include <unistd.h> #include <stdio.h> #include <sys/types.h> #include <fcntl.h> #define handle_error(msg) \ do { perror(msg); exit(EXIT_FAILURE); } while (0) int main(void) { int context, fd, spu_status; uint32_t instruction, npc; context = spu_create("/spu/example-context", 0, 0755); if (context == -1) handle_error("spu_create"); /* write a 'stop 0x1234' instruction to the SPU's * local store memory */ instruction = 0x00001234; fd = open("/spu/example-context/mem", O_RDWR); if (fd == -1) handle_error("open"); write(fd, &instruction, sizeof(instruction)); /* set npc to the starting instruction address of the * SPU program. Since we wrote the instruction at the * start of the mem file, the entry point will be 0x0 */ npc = 0; spu_status = spu_run(context, &npc, NULL); if (spu_status == -1) handle_error("open"); /* we should see a status code of 0x1234002: * 0x00000002 (spu was stopped due to stop-and-signal) * | 0x12340000 (the stop-and-signal code) */ printf("SPU Status: 0x%08x\n", spu_status); exit(EXIT_SUCCESS); }
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 18 décembre 2007 et révisée le 8 janvier 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 spu_run ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
0x02 | VALEUR RENVOYÉE |
0x04 | VALEUR RENVOYÉE |
0x08 | VALEUR RENVOYÉE |
0x10 | VALEUR RENVOYÉE |
0x20 | VALEUR RENVOYÉE |
0x3fff0000 | VALEUR RENVOYÉE |
0x40 | VALEUR RENVOYÉE |
EBADF | ERREURS |
EFAULT | ERREURS |
EINTR | ERREURS |
EINVAL | ERREURS |
ENOMEM | ERREURS |
ENOSYS | ERREURS |
SPE_EVENT_DMA_ALIGNMENT | DESCRIPTION |
SPE_EVENT_INVALID_DMA | DESCRIPTION |
SPE_EVENT_SPE_DATA_STORAGE | DESCRIPTION |
SPE_EVENT_SPE_ERROR | DESCRIPTION |