spu_create(2)

NAVN
spu_create - opret en ny spu-kontekst

BIBLIOTEK
Standard C library (libc, -lc)

SYNOPSIS
#include <sys/spu.h>          /* Definition af SPU_*-konstanter */
#include <sys/syscall.h>      /* Definition af SYS_*-konstanter */
#include <unistd.h>

int syscall(SYS_spu_create, const char *path, unsigned int flag,
            mode_t mode, int neighbor_fd);

Bemærk: glibc tilbyder intet omslag for spu_create(), hvilket nødvendiggør brugen af syscall(2).

BESKRIVELSE
Systemkaldet spu_create() bruges på PowerPC-maskiner, der implementerer Cell Broadband Engine Architecture for at tilgå Synergistic Processor Units (SPU'er. Opretter en ny logisk kontekst for en SPU i sti og returnerer en fildeskriptor associeret med den. sti skal referere til en ikkeeksisterende mappe på monteringspunktet for SPU-filsystemet (spufs). Hvis spu_create() er succesfuld så oprettes en mappe på sti og udfyldes med filerne beskrevet i spufs(7).

Når en kontekst oprettes kan den returnerede fildeskriptor kun sendes til spu_run(2), brugt som argumentet dirfd til *at-systemkaldsfamilien (f.eks. openat(2)), eller lukket; andre operationer er ikke defineret. En logisk SPU-kontekst ødelægges (sammen med alle filer oprettet i kontekstens sti-mappe) når først den sidste reference til konteksten er væk; dette sker normalt når fildeskriptoren returneret af spu_create() lukkes.

Argumentet mode (minus bit angivet i processens umask(2)) angiver rettighederne brugt til at oprette den nye mappe i spufs. Se stat(2) for en fuld liste over muligt mode-værdier.

neighbor_fd bruges kun når flaget SPU_CREATE_AFFINITY_SPU er angivet; se nedenfor.

Argumentet flag kan være nul eller enhver bitwise OR-ed kombination af de følgende konstanter:

SPU_CREATE_EVENTS_ENABLED
    Frem for at bruge signaler til at rapportere DMA-fejl, så brug event-argumentet for spu_run(2).

SPU_CREATE_GANG
    Opret en SPU-gang i stedet for en kontekst. (En gang er en gruppe af SPU-kontekster der er funktionelt relateret til hinanden og der deler fælles planlægningsparametre—prioritet og politik. I fremtiden kan gang-planlægning måske blive implementeret som medførende at gruppen skiftes ind og ud som en enkelt enhed).

    En ny mappe vil blive oprettet på placeringen angivet af sti-argumentet. Denne gang kan bruges til at indeholde andet SPU-indhold, ved at tilbyde et stinavn der er i gang-mappen for yderligere kald til spu_create().

SPU_CREATE_NOSCHED
    Opret en kontekst der ikke er påvirket af SPU-planlæggeren. Når konteksten er afviklet, så vil den ikke blive planlagt, indtil den er ødelagt af den skabende proces.

    Da konteksten ikke kan fjernes fra SPU'en, så bliver nogen funktionalitet deaktiveret for SPU_CREATE_NOSCHED-konteksterne. Kun et undersæt af filerne vil være tilgængelige i denne kontekstmappe i spufs. Derudover kan SPU_CREATE_NOSCHED-kontekster ikke dumpe en kernefil, når den går ned.

    Oprettelse af SPU_CREATE_NOSCHED-kontekster kræver CAP_SYS_NICE-funktionaliteten.

SPU_CREATE_ISOLATE
    Opret en isoleret SPU-kontekst. Isolerede kontekster er beskyttet fra nogle PPE-operationer (PowerPC Processing Element), såsom adgang til SPU'ets lokale lager og NPC-registeret.

    Opretttelse af SPU_CREATE_ISOLATE-kontekster kræver også flaget SPU_CREATE_NOSCHED.

SPU_CREATE_AFFINITY_SPU (siden Linux 2.6.23)
    Opret en kontekst med affinitet til en anden SPU-kontekst. Denne affinitet-information bruges i SPU-planlægningsalgoritmen. Brug af dette flag kræver at en fildeskriptor, der refererer til den anden SPU-kontekst sendes til argumentet neighbor_fd.

SPU_CREATE_AFFINITY_MEM (siden Linux 2.6.23)
    Opret en kontekst med affinitet til systemhukommelsen. Denne affinitet-information bruges i SPU-planlægningsalgoritmen.

RETURVÆRDI
Ved succes returnerer spu_create() en ny fildeskriptor. Ved fejl returneres -1 og errno angives for at indikere fejlen.

FEJL

EACCES
    Den nuværende bruger har ikke skriveadgang til monteringspunktet for spufs(7).

EEXIST
    En SPU-kontekst findes allerede på det angivne stinavn.

EFAULT
    sti er ikke en gyldig strengpeger i den kaldende proces' adressserum.

EINVAL
    sti er ikke en mappe i monteringspunktet spufs(7), eller ugyldige flag er blevet angivet.

ELOOP
    For mange symbolske henvisninger blev fundet under opslaget af sti.

EMFILE
    Begrænsningen per proces for antallet af åbne fildeskriptorer er blevet nået.

ENAMETOOLONG
    sti er for lang.

ENFILE
    Systemets begrænsning på det samlede antal åbne filer er nået.

ENODEV
    Der blev anmodt om en isoleret kontekst, mne udstyret understøtter ikke SPU-isolering.

ENOENT
    En del af sti kunne ikke slås op.

ENOMEM
    Kernen kunne ikke allokere alle de krævede ressourcer.

ENOSPC
    Der er ikke nok SPU-ressourcer tilgængelige til at oprette en ny kontekst eller den brugerspecifikke begrænsning for antallet af SPU-kontekster er blevet nået.

ENOSYS
    Funktionaliteten er ikke tilbudt af det nuværende system, da hverken udstyret tilbyder SPU'er eller spufs-modulet er indlæst.

ENOTDIR
    En del af sti er ikke en mappe.

EPERM
    Flaget SPU_CREATE_NOSCHED er angivet, men brugeren har ikke CAP_SYS_NICE-funktionaliteten.

FILER
sti skal pege på en placering under monteringspunktet for spufs. Efter konventionen bliver den monteret i /spu.

STANDARDER
Linux på PowerPC.

HISTORIK
Linux 2.6.16.

Før tilføjelsen af flaget SPU_CREATE_AFFINITY_SPU i Linux 2.6.23 brugte systemkaldet spu_create() kun tre tre argumenter (dvs. der var ikke et neighbor_fd-argument).

NOTER
spu_create() er lavet til brug fra biblioteker, der implementerer en mere abstrakt grænseflade til SPU'er, ikke til brug fra normale programmer. Se http://www.bsc.es/projects/deepcomputing/linuxoncell/ for anbefalede biblioteker.

EKSEMPLER
Se spu_run(2) for et eksempel på brugen af spu_create()

SE OGSÅ
close(2), spu_run(2), capabilities(7), spufs(7)

OVERSÆTTELSE
Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>

Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.

Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.