spu_create
Table des matières
Retour à l'index
NOM
spu_create - Créer un nouveau contexte spu
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#include <sys/spu.h> /* Définition des constantes SPU_* */
#include <sys/syscall.h> /* Définition des constantes SYS_* */
#include <unistd.h>
int syscall(SYS_spu_create, const char *pathname, 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
L'appel système spu_create() est utilisé sur les PowerPC disposant de
l'architecture du processeur Cell (Cell Broadband Engine Architecture) dans
le but d'accéder aux SPU (Synergistic Processor Units). Il crée un nouveau
contexte logique pour un SPU dans pathname et renvoie le descripteur de
fichier qui lui est associé. pathname doit pointer vers un répertoire qui
n'existe pas sur le point de montage du système de fichiers SPU
(spufs). Si spu_create() réussit, un répertoire est créé dans
pathname et est rempli par les fichiers décrits dans spufs(7).
Lorsqu'un contexte est créé, le descripteur de fichier renvoyé ne peut
qu'être passé à spu_run(2), utilisé comme paramètre dirfd pour les
appels système de la famille *at (par exemple, openat(2)), ou fermé ;
d'autres opérations ne sont pas définies. Un contexte logique SPU est
détruit (avec tous les fichiers créés dans le répertoire pathname du
contexte) lorsque la dernière référence au contexte a disparu ; cela
survient généralement lorsque le descripteur de fichier renvoyé par
spu_create() est fermé.
Le paramètre mode (sauf les bits positionnés dans l'umask(2) du
processus) indique les permissions utilisées pour créer le nouveau
répertoire sur le système de fichiers spufs. Consultez stat(2) pour
une liste complète des valeurs de mode.
L'argument neighbor_fd est utilisé seulement quand l'attribut
SPU_CREATE_AFFINITY_SPU est spécifié ; voir plus bas.
Le paramètre flags vaut zéro ou une combinaison par un OU bit à bit des
options suivantes :
- SPU_CREATE_EVENTS_ENABLED
-
Plutôt que d'utiliser des signaux pour signaler des erreurs DMA, utiliser
l'argument event de spu_run(2).
- SPU_CREATE_GANG
-
Créer un gang SPU plutôt qu'un contexte. (Un gang est un groupe de contextes
SPU qui sont en relation fonctionnelle entre eux et qui partagent des
paramètres d'ordonnancement communs --- priorité et politique. Dans le
futur, l'ordonnancement de gangs pourra être implémenté faisant que le
groupe soit mis en œuvre ou non comme une unité simple.)
-
Un nouveau répertoire sera créé à l'endroit indiqué par l'argument
pathname. Le gang peut être utilisé pour détenir d'autres contextes SPU
en fournissant un nom de chemin qui soit à l'intérieur du répertoire du gang
pour des appels ultérieurs à spu_create().
- SPU_CREATE_NOSCHED
-
Créer un contexte qui ne soit pas affecté par l'ordonnanceur SPU. Une fois
que le contexte est lancé, il ne sera pas déplanifié jusqu'à ce qu'il soit
détruit par le processus créateur.
-
Parce que le contexte ne peut pas être supprimé de la SPU, certaines
fonctionnalités sont désactivées des contextes SPU_CREATE_NOSCHED. Seul
un sous-ensemble de fichiers sera disponible dans le répertoire du contexte
sur le système de fichiers spufs. De plus, les contextes
SPU_CREATE_NOSCHED ne peuvent pas créer de fichier de vidage lors d'un
plantage.
-
La création de contextes SPU_CREATE_NOSCHED nécessite la capacité
CAP_SYS_NICE.
- SPU_CREATE_ISOLATE
-
Créer un contexte SPU isolé. Les contextes isolés sont protégés de certaines
opérations PPE (PowerPC Processing Element), comme l'accès au stockage local
de la SPU ou au registre NPC.
-
La création de contextes SPU_CREATE_ISOLATE nécessite également
l'attribut SPU_CREATE_NOSCHED.
- SPU_CREATE_AFFINITY_SPU (depuis Linux 2.6.23)
-
Créer un contexte avec une affinité pour un autre contexte SPU. Cette
information d'affinité est utilisée dans l'algorithme d'ordonnancement du
SPU. L'utilisation de cet attribut nécessite que le descripteur de fichier
référençant l'autre contexte SPU soit passé dans l'argument neighbor_fd.
- SPU_CREATE_AFFINITY_MEM (depuis Linux 2.6.23)
-
Créer un contexte avec une affinité pour la mémoire système. Cette
information d'affinité est utilisée dans l'algorithme d'ordonnancement du
SPU.
VALEUR RENVOYÉE
S'il réussit, spu_create() renvoie un nouveau descripteur de fichier. En
cas d'échec, il renvoie -1 et errno est défini pour indiquer l'erreur.
ERREURS
- EACCES
-
L'utilisateur en cours n'a pas accès en écriture sur le point de montage du
spufs(7).
- EEXIST
-
Un contexte SPU existe déjà dans le chemin fourni.
- EFAULT
-
pathname n'est pas un pointeur de chaîne valable dans l'espace d'adresses
du processus appelant.
- EINVAL
-
pathname n'est pas un répertoire du point de montage du spufs(7), ou
des options non valables ont été fournies.
- ELOOP
-
Trop de liens symboliques trouvés lors de la résolution de pathname.
- EMFILE
-
La limite du nombre de descripteurs de fichiers par processus a été
atteinte.
- ENAMETOOLONG
-
nom_chemin est trop long.
- ENFILE
-
La limite du nombre total de fichiers ouverts pour le système entier a été
atteinte.
- ENODEV
-
Un contexte isolé a été demandé, mais le matériel ne prend pas en charge
l'isolation SPU.
- ENOENT
-
Une partie de pathname n'a pas pu être résolue.
- ENOMEM
-
Le noyau n'a pas pu allouer toutes les ressources nécessaires.
- ENOSPC
-
Il n'y a pas suffisamment de ressources SPU disponibles pour créer un
nouveau contexte ou la limite spécifique à l'utilisateur du nombre de
contextes SPU a été atteinte.
- ENOSYS
-
La fonctionnalité n'est par fournie par le système actuel parce que le
matériel ne fournit pas de SPU ou parce que le module spufs n'est pas
chargé.
- ENOTDIR
-
Un élément du chemin d'accès pathname n'est pas un répertoire.
- EPERM
-
L'attribut SPU_CREATE_NOSCHED a été fourni, mais l'utilisateur n'a pas la
capacité CAP_SYS_NICE.
FICHIERS
pathname doit pointer vers un emplacement du point de montage du
spufs, qui est monté par convention dans /spu.
STANDARDS
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 système spu_create() ne prenait que trois arguments (c'est-à-dire
que l'argument neighbor_fd n'existait pas).
NOTES
spu_create() est conçu pour être appelé depuis des bibliothèques qui
implémentent une interface plus abstraite pour les SPU, pas pour être appelé
directement par les applications normales. Consultez
pour les
bibliothèques recommandées.
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 française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la
GNU General Public License version 3
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- FICHIERS
-
- STANDARDS
-
- HISTORIQUE
-
- NOTES
-
- EXEMPLES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:06 GMT, September 19, 2025