Provided by: manpages-fr-dev_4.13-4_all bug

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 neighbor_fd);

       Note : il n'existe pas d'enveloppe pour cet appel système dans la glibc ; voir 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  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.

       The  neighbor_fd  is  used  only  when  the SPU_CREATE_AFFINITY_SPU flag is specified; see
       below.

       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 (since Linux 2.6.23)
              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 (since Linux 2.6.23)
              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.

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 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  The SPU_CREATE_NOSCHED flag has  been  given,  but  the  user  does  not  have  the
              CAP_SYS_NICE capability.

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  ⟨http://www.bsc.es/projects
       /deepcomputing/linuxoncell/⟩ pour les bibliothèques recommandées.

       Prior   to  the  addition  of  the  SPU_CREATE_AFFINITY_SPU  flag  in  Linux  2.6.23,  the
       spu_create()  system call took only  three  arguments  (i.e.,  there  was  no  neighbor_fd
       argument).

EXEMPLES

       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 5.10 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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> et David Prévot <david@tilapin.org>

       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 ⟨⟩.