table of contents
| spu_create(2) | System Calls Manual | 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Ŷ
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 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.
| 8. februar 2026 | Linux man-pages (ej udgivet) |