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 pas 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.

STANDARDS

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

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.
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).

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 <[email protected]>, Thierry Vignaud <[email protected]>, François Micaux, Alain Portal <[email protected]>, Jean-Philippe Guérard <[email protected]>, Jean-Luc Coulon (f5ibh) <[email protected]>, Julien Cristau <[email protected]>, Thomas Huriaux <[email protected]>, Nicolas François <[email protected]>, Florentin Duneau <[email protected]>, Simon Paillard <[email protected]>, Denis Barbier <[email protected]>, David Prévot <[email protected]> et Jean-Pierre Giraud <[email protected]>
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 à [email protected]

Recommended readings

Pages related to spu_create you should read also: