Provided by: manpages-fr-dev_4.21.0-2_all bug

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  <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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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 à ⟨debian-l10n-french@lists.debian.org⟩.