spu_create(2) System Calls Manual spu_create(2) NOM spu_create - Creer un nouveau contexte spu BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include /* Definition des constantes SPU_* */ #include /* Definition des constantes SYS_* */ #include int syscall(SYS_spu_create, const char *path, unsigned int flags, mode_t mode, int neighbor_fd); Remarque : la glibc ne fournit pas d'enveloppe pour spu_create(), imposant l'utilisation de syscall(2). DESCRIPTION The spu_create() system call is used on PowerPC machines that implement the Cell Broadband Engine Architecture in order to access Synergistic Processor Units (SPUs). It creates a new logical context for an SPU in path and returns a file descriptor associated with it. path must refer to a nonexistent directory in the mount point of the SPU filesystem (spufs). If spu_create() is successful, a directory is created at path and it is populated with the files described in spufs(7). When a context is created, the returned file descriptor can only be passed to spu_run(2), used as the dirfd argument to the *at family of system calls (e.g., openat(2)), or closed; other operations are not defined. A logical SPU context is destroyed (along with all files created within the context's path directory) once the last reference to the context has gone; this usually occurs when the file descriptor returned by spu_create() is closed. Le parametre mode (sauf les bits positionnes dans l'umask(2) du processus) indique les permissions utilisees pour creer le nouveau repertoire sur le systeme de fichiers spufs. Consultez stat(2) pour une liste complete des valeurs de mode. L'argument neighbor_fd est utilise seulement quand l'attribut SPU_CREATE_AFFINITY_SPU est specifie ; voir plus bas. Le parametre flags vaut zero ou une combinaison par un OU bit a bit des options suivantes : SPU_CREATE_EVENTS_ENABLED Plutot que d'utiliser des signaux pour signaler des erreurs DMA, utiliser l'argument event de spu_run(2). SPU_CREATE_GANG Creer un gang SPU plutot qu'un contexte. (Un gang est un groupe de contextes SPU qui sont en relation fonctionnelle entre eux et qui partagent des parametres d'ordonnancement communs -- priorite et politique. Dans le futur, l'ordonnancement de gangs pourra etre implemente faisant que le groupe soit mis en oeuvre ou non comme une unite simple.) A new directory will be created at the location specified by the path argument. This gang may be used to hold other SPU contexts, by providing a pathname that is within the gang directory to further calls to spu_create(). SPU_CREATE_NOSCHED Creer un contexte qui ne soit pas affecte par l'ordonnanceur SPU. Une fois que le contexte est lance, il ne sera pas deplanifie jusqu'a ce qu'il soit detruit par le processus createur. Parce que le contexte ne peut pas etre supprime de la SPU, certaines fonctionnalites sont desactivees des contextes SPU_CREATE_NOSCHED. Seul un sous-ensemble de fichiers sera disponible dans le repertoire du contexte sur le systeme de fichiers spufs. De plus, les contextes SPU_CREATE_NOSCHED ne peuvent pas creer de fichier de vidage lors d'un plantage. La creation de contextes SPU_CREATE_NOSCHED necessite la capacite CAP_SYS_NICE. SPU_CREATE_ISOLATE Creer un contexte SPU isole. Les contextes isoles sont proteges de certaines operations PPE (PowerPC Processing Element), comme l'acces au stockage local de la SPU ou au registre NPC. La creation de contextes SPU_CREATE_ISOLATE necessite egalement l'attribut SPU_CREATE_NOSCHED. SPU_CREATE_AFFINITY_SPU (depuis Linux 2.6.23) Creer un contexte avec une affinite pour un autre contexte SPU. Cette information d'affinite est utilisee dans l'algorithme d'ordonnancement du SPU. L'utilisation de cet attribut necessite que le descripteur de fichier referencant l'autre contexte SPU soit passe dans l'argument neighbor_fd. SPU_CREATE_AFFINITY_MEM (depuis Linux 2.6.23) Creer un contexte avec une affinite pour la memoire systeme. Cette information d'affinite est utilisee dans l'algorithme d'ordonnancement du SPU. VALEUR RENVOYEE S'il reussit, spu_create() renvoie un nouveau descripteur de fichier. En cas d'echec, il renvoie -1 et errno est defini pour indiquer l'erreur. ERREURS EACCES L'utilisateur en cours n'a pas acces en ecriture sur le point de montage du spufs(7). EEXIST Un contexte SPU existe deja dans le chemin fourni. EFAULT path is not a valid string pointer in the calling process's address space. EINVAL path is not a directory in the spufs(7) mount point, or invalid flags have been provided. ELOOP Too many symbolic links were found while resolving path. EMFILE La limite du nombre de descripteurs de fichiers par processus a ete atteinte. ENAMETOOLONG path est trop long. ENFILE La limite du nombre total de fichiers ouverts pour le systeme entier a ete atteinte. ENODEV Un contexte isole a ete demande, mais le materiel ne prend pas en charge l'isolation SPU. ENOENT Part of path could not be resolved. ENOMEM Le noyau n'a pas pu allouer toutes les ressources necessaires. ENOSPC Il n'y a pas suffisamment de ressources SPU disponibles pour creer un nouveau contexte ou la limite specifique a l'utilisateur du nombre de contextes SPU a ete atteinte. ENOSYS La fonctionnalite n'est par fournie par le systeme actuel parce que le materiel ne fournit pas de SPU ou parce que le module spufs n'est pas charge. ENOTDIR A part of path is not a directory. EPERM L'attribut SPU_CREATE_NOSCHED a ete fourni, mais l'utilisateur n'a pas la capacite CAP_SYS_NICE. FICHIERS path must point to a location beneath the mount point of spufs. By convention, it gets mounted in /spu. NORMES Linux sur PowerPC. HISTORIQUE Linux 2.6.16. Avant l'ajout dans Linux 2.6.23 de l'attribut SPU_CREATE_AFFINITY_SPU, l'appel systeme spu_create() ne prenait que trois arguments (c'est-a-dire que l'argument neighbor_fd n'existait pas). NOTES spu_create() is meant to be used from libraries that implement a more abstract interface to SPUs, not to be used from regular applications. See for the recommended libraries. EXEMPLES Consultez spu_run(2) pour un exemple d'utilisation de spu_create() VOIR AUSSI close(2), spu_run(2), capabilities(7), spufs(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.18 8 fevrier 2026 spu_create(2)