Provided by: manpages-fr-dev_4.26.0-1_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 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
       http://www.bsc.es/projects/deepcomputing/linuxoncell/ 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  à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                      spu_create(2)