Loading

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 spu_create(const char *pathname, int flags, mode_t mode,
                      int neighbor_fd);

       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  spécifié  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  (moins  les  bits  positionnés  dans l’umask(2) du
       processus) spécifie les permissions utilisées  pour  créer  le  nouveau
       répertoire  sur  le  système  de  fichiers spufs. Voir 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
       http://www.bsc.es/projects/deepcomputing/linuxoncell/     pour      les
       bibliothèques recommandées.

EXEMPLE

       Voir 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.23 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

       Cette page de manuel a été traduite et est maintenue par Julien Cristau
       <julien.cristau@ens-lyon.org>  et l’équipe francophone de traduction de
       Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».