SPU_CREATE
Manuel du programmeur Linux (2)5 août 2012
NOM
spu_create - Créer un nouveau contexte spuSYNOPSIS
#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 indiqué 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 (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.
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.CONFORMITÉ
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 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.66 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 à <perkamon-fr@traduc.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- FICHIERS
- VERSIONS
- CONFORMITÉ
- NOTES
- EXEMPLE
- VOIR AUSSI
- COLOPHON
- TRADUCTION
This document was created by man2html, using the manual pages.
Time: 21:52:36 GMT, July 12, 2014