.\" -*- coding: UTF-8 -*- .\" Copyright 2006, International Business Machines Corp. .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH spu_run 2 "8. februar 2026" "Linux man\-pages 6.18" .SH NAVN spu_run \- afvikl en SPU\-kontekst .SH BIBLIOTEK C\-standardbibliotek (\fIlibc\fP,\ \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP /* Definition af \fBSPU_*\fP\-konstanter */ \fB#include \fP /* Definition af \fBSYS_*\fP\-konstanter */ \fB#include \fP .P \fBint syscall(SYS_spu_run, int \fP\fIfd\fP\fB, uint32_t *\fP\fInpc\fP\fB, uint32_t *\fP\fIevent\fP\fB);\fP .fi .P \fIBemærk\fP: glibc tilbyder intet omslag for \fBspu_run\fP(), hvilket nødvendiggør brug af \fBsyscall\fP(2). .SH BESKRIVELSE Systemkaldet \fBspu_run\fP() bruges på PowerPC\-maskiner, der implementerer Cell Broadband Engine Architecture for at tilgå Synergistic Processor Units (SPU'er). Argumentet \fIfd\fP er en fildeskriptor returneret af \fBspu_create\fP(2), der refererer til en specifik SPU\-kontekst. Når konteksten bliver planlagt til en fysisk SPU, så startes afvikling på instruktionspegeren sendt i \fInpc\fP. .P Afvikling af SPU\-kode sker synkront, hvilket betyder at \fBspu_run\fP() blokerer mens SPU stadig afvikles. Hvis der er et behov for at afvikle SPU\-kode parallelt med anden kode på enten hoved\-cpu'en eller andre SPU'er, skal en ny afviklingstråd oprettes først (f.eks. via \fBpthread_create\fP(3)). .P Når \fBspu_run\fP() returnerer skrives den nuværend eværdi for SPU\-programtælleren til \fInpc\fP, så efterfølgende kald til \fBspu_run\fP() kan bruge den samme \fInpc\fP\-peger. .P Argumentet \fIevent\fP tilbyder et mellemlager for en udvidet statuskode. Hvis SPU\-konteksten blev oprettet med flaget \fBSPU_CREATE_EVENTS_ENABLED\fP, så udfyldes dette mellemlager af Linuxkernen før \fBspu_run\fP() returnerer. .P Statuskoden kan være en (eller flere) af de følgende konstanter: .TP \fBSPE_EVENT_DMA_ALIGNMENT\fP Der opstod en DMA\-justeringsfejl. .TP \fBSPE_EVENT_INVALID_DMA\fP .\" SPE_EVENT_SPE_DATA_SEGMENT is defined, but does not seem to be generated .\" at any point (in Linux 5.9 sources). En ugyldig MFC DMA\-kommando blev forsøgt. .TP \fBSPE_EVENT_SPE_DATA_STORAGE\fP Der opstod en DMA\-lagerfejl. .TP \fBSPE_EVENT_SPE_ERROR\fP En illegal instruktion blev afviklet. .P NULL er en gyldig værdi for argumentet \fIevent\fP argument. I dette tilfælde vil hændelserne ikke blive rapporteret til den kaldende proces. .SH RETURVÆRDI Ved succes returnerer \fBspu_run\fP() værdien for registeret \fIspu_status\fP. Ved returneres \-1 og \fIerrno\fP angives for at indikere fejlen. .P Registerværdien \fIspu_status\fP er en bitmaske for statuskoder og valgfrit en 14\-bit kode returneret fra instruktionen \fBstop\-and\-signal\fP på SPU'en. Bitmaskene for statuskoderne er: .TP \fB0x02\fP SPU blev stoppet af en \fBstop\-and\-signal\fP\-instruktion. .TP \fB0x04\fP SPU blev stoppet af en \fBhalt\fP\-instrution. .TP \fB0x08\fP SPU venter på en kanal. .TP \fB0x10\fP SPU er i enkelt trin\-tilstand. .TP \fB0x20\fP SPU har forsøgt at afvikle en ugyldig instruktion. .TP \fB0x40\fP SPU har forsøgt at tilgå en ugyldig kanal. .TP \fB0x3fff0000\fP Bittene maskeret med denne værdi indeholder koden returneret fra en \fBstop\-and\-signal\fP\-instruktion. Disse bit er kun gyldige hvis 0x02\-bitten er angivet. .P Hvis \fBspu_run\fP() ikke har returneret en fejl, er en eller flere bit blandt de nedre otte altid angivet.* .SH FEJL .TP \fBEBADF\fP \fIfd\fP er ikke en gyldig filbeskrivelse. .TP \fBEFAULT\fP \fInpc\fP er ikke en gyldig peger, eller \fIevent\fP er ikke\-NULL og en ugyldig peger. .TP \fBEINTR\fP Der opstod et signal mens \fBspu_run\fP() var i gang; se \fBsignal\fP(7). Værdien \fInpc\fP er blevet opdateret til den nye programtællerværdi hvis nødvendigt. .TP \fBEINVAL\fP \fIfd\fP er ikke en gyldig fildeskriptor returneret fra \fBspu_create\fP(2). .TP \fBENOMEM\fP Der var ikke nok hukommelse tilgængelig til at håndtere en sidefejl medført fra en Memory Flow Controller (MFC) direkte hukommelsesadgang. .TP \fBENOSYS\fP Funktionaliteten er ikke tilbudt af det nuværende system, da hverken udstyret tilbyder SPU'er eller spufs\-modulet er indlæst. .SH STANDARDER Linux på PowerPC. .SH HISTORIK Linux 2.6.16. .SH NOTER \fBspu_run\fP() er lavet til brug fra biblioteker, der impelemnterer en mere abstrakt grænseflade til SPU'er, ikke til brug fra normale programmer. Se .UR http:\://www.bsc.es\:/projects\:/deepcomputing\:/linuxoncell/ .UE for de anbefalede biblioteker. .SH EKSEMPLER Det følgende er et eksempel på afvikling af et simpelt, en instruktion SPU\-program med systemkaldet \fBspu_run\fP(). .P .\" SRC BEGIN (spu_run.c) .EX #include #include #include #include #include #include #include \& int main(void) { int context, fd, spu_status; uint32_t instruction, npc; \& context = syscall(SYS_spu_create, "/spu/example\-context", 0, 0755); if (context == \-1) err(EXIT_FAILURE, "spu_create"); \& /* * Skriv en \[aq]stop 0x1234\[aq] instruktion til SPU'en\[aq]s * lokale lagerhukommelse. */ instruction = 0x00001234; \& fd = open("/spu/example\-context/mem", O_RDWR); if (fd == \-1) err(EXIT_FAILURE, "open"); write(fd, &instruction, sizeof(instruction)); \& /* * angiv npc til den startende instruktionsadresse for * SPU\-programmet. Siden vi skrev instruktionen i starten af * mem\-filen vil indgangspunktet være 0x0. */ npc = 0; \& spu_status = syscall(SYS_spu_run, context, &npc, NULL); if (spu_status == \-1) err(EXIT_FAILURE, "open"); \& /* * Vi bør se en statuskode på 0x12340002: * 0x00000002 (spu blev stoppet på grund af stop og signal) * | 0x12340000 (stop og signal\-koden) */ printf("SPU Status: %#08x\[rs]n", spu_status); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .\" .SH AUTHORS .\" Arnd Bergmann , Jeremy Kerr .SH "SE OGSÅ" \fBclose\fP(2), \fBspu_create\fP(2), \fBcapabilities\fP(7), \fBspufs\fP(7) .PP .SH OVERSÆTTELSE Oversættere af denne manual til dansk Joe Dalton . .PP Denne oversættelse er gratis dokumentation; læs .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR. .PP Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til .MT debian-l10n-danish@lists.debian.org .ME .