NOM¶
spu_create - Créer un nouveau contexte spu
SYNOPSIS¶
#include <sys/types.h>
#include <sys/spu.h>
int spu_create(const char *pathname, int flags, mode_t mode);
int spu_create(const char *pathname, int flags, mode_t mode,
int neighbor_fd);
Remarque : il n'existe pas de fonction glibc autour de cet appel
système ; consultez
NOTES.
DESCRIPTION¶
L'appel système
spu_create() est utilisé sur les PowerPC
disposant de l'architecture du processeur Cell 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
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
commuté comme une unité simple.)
Un nouveau répertoire sera créé à l'endroit
spécifié par l'argument pathname. Le gang peut être
utilisé pour tenir d'autres contextes 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ée 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ée 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
- Crée un contexte avec l'affinité d'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
- Crée un contexte avec l'affinité de la
mémoire système. Cette information d'affinité est
utilisée dans l'algorithme d'ordonnancement du SPU.
Le paramètre
mode (moins les bits positionnés dans
l'
umask(2) du processus) spécifie 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.
VALEUR RENVOYÉE¶
S'il réussit,
spu_create() renvoie un nouveau descripteur de
fichier. En cas d'erreur, il renvoie -1 et
errno contient l'un des
codes d'erreur listés ci-dessous.
ERREURS¶
- EACCES
- L'utilisateur en cours n'a pas accès au 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
- Le processus a atteint sa limite du nombre de fichiers
ouverts.
- ENAMETOOLONG
- pathname est trop long.
- ENFILE
- Le système a atteint la limite globale du nombre de
fichiers ouverts.
- 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.
VERSIONS¶
L'appel système
spu_create() est apparu dans Linux 2.6.16.
Cet appel système est spécifique à Linux et implémenté
uniquement sur l'architecture PowerPC. Les programmes qui l'utilisent ne sont
pas portables.
NOTES¶
La glibc ne fournit pas de fonction pour cet appel système : utilisez
syscall(2) pour l'appeler. Notez cependant que
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
http://www.bsc.es/projects/deepcomputing/linuxoncell/
pour les bibliothèques recommandées.
EXEMPLE¶
Consultez
spu_run(2) pour un exemple d'utilisation de
spu_create()
VOIR AUSSI¶
close(2),
spu_run(2),
capabilities(7),
spufs(7)
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Julien Cristau et l'équipe francophone de traduction de
Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».