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 /* Definition af SPU_*-konstanter */ #include /* Definition af SYS_*-konstanter */ #include int syscall(SYS_spu_create, const char *path, unsigned int flag, mode_t mode, int neighbor_fd); Bemaerk: glibc tilbyder intet omslag for spu_create(), hvilket nodvendiggor brugen af syscall(2). BESKRIVELSE Systemkaldet spu_create() bruges pa PowerPC-maskiner, der implementerer Cell Broadband Engine Architecture for at tilga 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 pa monteringspunktet for SPU-filsystemet (spufs). Hvis spu_create() er succesfuld sa oprettes en mappe pa sti og udfyldes med filerne beskrevet i spufs(7). Nar 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 odelaegges (sammen med alle filer oprettet i kontekstens sti-mappe) nar forst den sidste reference til konteksten er vaek; dette sker normalt nar 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-vaerdier. neighbor_fd bruges kun nar flaget SPU_CREATE_AFFINITY_SPU er angivet; se nedenfor. Argumentet flag kan vaere nul eller enhver bitwise OR-ed kombination af de folgende konstanter: SPU_CREATE_EVENTS_ENABLED Frem for at bruge signaler til at rapportere DMA-fejl, sa 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 faelles planlaegningsparametre--prioritet og politik. I fremtiden kan gang-planlaegning maske blive implementeret som medforende at gruppen skiftes ind og ud som en enkelt enhed). En ny mappe vil blive oprettet pa 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 pavirket af SPU-planlaeggeren. Nar konteksten er afviklet, sa vil den ikke blive planlagt, indtil den er odelagt af den skabende proces. Da konteksten ikke kan fjernes fra SPU'en, sa bliver nogen funktionalitet deaktiveret for SPU_CREATE_NOSCHED-konteksterne. Kun et undersaet af filerne vil vaere tilgaengelige i denne kontekstmappe i spufs. Derudover kan SPU_CREATE_NOSCHED-kontekster ikke dumpe en kernefil, nar den gar ned. Oprettelse af SPU_CREATE_NOSCHED-kontekster kraever CAP_SYS_NICE-funktionaliteten. SPU_CREATE_ISOLATE Opret en isoleret SPU-kontekst. Isolerede kontekster er beskyttet fra nogle PPE-operationer (PowerPC Processing Element), sasom adgang til SPU'ets lokale lager og NPC-registeret. Opretttelse af SPU_CREATE_ISOLATE-kontekster kraever ogsa 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-planlaegningsalgoritmen. Brug af dette flag kraever 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-planlaegningsalgoritmen. RETURVAERDI Ved succes returnerer spu_create() en ny fildeskriptor. Ved fejl returneres -1 og errno angives for at indikere fejlen. FEJL EACCES Den nuvaerende bruger har ikke skriveadgang til monteringspunktet for spufs(7). EEXIST En SPU-kontekst findes allerede pa 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 Begraensningen per proces for antallet af abne fildeskriptorer er blevet naet. ENAMETOOLONG sti er for lang. ENFILE Systemets begraensning pa det samlede antal abne filer er naet. ENODEV Der blev anmodt om en isoleret kontekst, mne udstyret understotter ikke SPU-isolering. ENOENT En del af sti kunne ikke slas op. ENOMEM Kernen kunne ikke allokere alle de kraevede ressourcer. ENOSPC Der er ikke nok SPU-ressourcer tilgaengelige til at oprette en ny kontekst eller den brugerspecifikke begraensning for antallet af SPU-kontekster er blevet naet. ENOSYS Funktionaliteten er ikke tilbudt af det nuvaerende system, da hverken udstyret tilbyder SPU'er eller spufs-modulet er indlaest. 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 pa en placering under monteringspunktet for spufs. Efter konventionen bliver den monteret i /spu. STANDARDER Linux pa PowerPC. HISTORIK Linux 2.6.16. For tilfojelsen 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 graenseflade til SPU'er, ikke til brug fra normale programmer. Se for anbefalede biblioteker. EKSEMPLER Se spu_run(2) for et eksempel pa brugen af spu_create() SE OGSA close(2), spu_run(2), capabilities(7), spufs(7) OVERSAETTELSE Oversaettere af denne manual til dansk Joe Hansen Denne oversaettelse er gratis dokumentation; laes GNU General Public License version 3 eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR. Hvis du stoder pa fejl i oversaettelsen af denne vejledning, skal du sende en besked til . Linux man-pages 6.18 8. februar 2026 spu_create(2)