SPU_CREATE(2)

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

DESCRIPTION
L'appel système spu_create() est utilisé sur les machines PowerPC à base de processeur « Cell Broadband Engine » afin d'accéder aux unités synergiques SPU (Synergistic Processor Units). Il crée un nouveau contexte pour une SPU dans le répertoire pathname et renvoie un descripteur de fichier associé à ce répertoire. pathname doit pointer sur un réportoire inexistant sur le point de montage du système de fichier des SPU (SPUFS). Si spu_create() réussit, un répertoire est créé dans pathname et est rempli avec les fichiers décrits dans spufs(7). Le descripteur de fichier ne peut qu'être passé à spu_run(2) ou fermé ; les autres opérations ne sont pas définies pour ce descripteur. Un contexte logique SPU est détruit lorsque son descripteur de fichier est fermé. Il en est de même pour tous les descripteurs de fichiers des fichiers qu'il contient. Lorsqu'un contexte SPU est détruit, toutes les entrées de son répertoire sont supprimées du système de fichiers SPU. L'argument flags peut être nul ou la constante suivante :

SPU_RAWIO
    Autoriser la projection de certains registres matériels du SPU dans l'espace utilisateur. Cet attribut nécessite la capacité CAP_SYS_RAWIO.

Le nouveau répertoire et les fichiers sont créés dans le système de fichiers SPU avec les permissions définies par l'argument mode sauf celles définies par l'umask(2) du processus. Les permissions réelles de chaque fichier dépendent également de la prise en charge des accès en lecture et/ou écriture par le fichier.

VALEUR RENVOYÉE
S'il réussit, spu_create() renvoie un nouveau descripteur de fichier. S'il échoue, -1 est renvoyé et errno contient l'un des codes d'erreur indiqués ci-dessous.

ERREURS

EACCES
    L'utilisateur actuel n'a pas l'accès en écriture sur le point de montage du SPUFS.

EEXIST
    Un contexte SPU existe déjà pour le chemin donné.

EFAULT
    pathname n'est pas un pointeur de chaîne valide sur l'actuel espace d'adresses.

EINVAL
    pathname n'est pas un répertoire du point de montage du SPUFS.

ELOOP
    Trop de liens symboliques ont été rencontrés en parcourant pathname.

EMFILE
    La limite maximum des descripteurs de fichiers ouverts pour le processus a été atteinte.

ENAMETOOLONG
    pathname est trop long.

ENFILE
    La limite du nombre total de fichiers ouverts sur le système a été atteinte.

ENOENT
    Une composante de pathname n'a pu être résolue.

ENOMEM
    Le noyau n'a pas pu allouer toutes les ressources nécessaires.

ENOSPC
    Il n'y a pas assez de ressources SPU disponibles pour créer un nouveau contexte ou bien la limite du nombre de contextes SPU pour l'utilisateur a été atteinte.

ENOSYS
    La fonctionnalité n'est pas fournie par le système, soit parce que le matériel ne fournit pas de SPU, soit parce que le module spufs n'est pas chargé.

ENOTDIR
    Une composante de pathname n'est pas un répertoire.

FICHIERS
pathname doit pointer vers un emplacement du point de montage du système de fichiers SPU. Par convention, il est monté dans /spu.

VERSIONS
L'appel système spu_create() a été indroduit dans la version 2.6.16 du noyau Linux.

CONFORMITÉ
Cet appel est spécifique à Linux et n'est implémenté que sur l'architecture ppc64. Les programmes qui utilisent cet appel système ne sont pas portables.

NOTES
La glibc ne fournit pas d'enveloppe pour cet appel système ; appelez-le avec syscall(2). Veuillez noter toutefois que spu_create() est conçu pour être utilisé par des bibliothèques qui implémentent une interface plus abstraite pour les SPU, pas pour être utilisé directement par des applications normales. Voir http://www.bsc.es/projects/deepcomputing/linuxoncell/ pour les bibliothèques recommandées.

BOGUES
Le code n'implémente pas encore toutes les fonctionnalités décrites ici.

VOIR AUSSI
close(2), spu_run(2), capabilities(7), spufs(7)

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 18 décembre 2007 et révisée le 21 décembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 spu_create ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.