gen xlat defs.sh(1)

Från Wiki.linux.se -Linux wikipedia på Svenska.
Version från den 15 maj 2026 kl. 06.16 av Admin (diskussion | bidrag) (Skapade sidan med '== NAMN == '''maint/gen_xlat_defs.sh''' — generera xlat .in-filer från Linux UAPI-headerfiler == SYNOPSIS == <pre> maint/gen_xlat_defs.sh maint/gen_xlat_defs.sh < xlat_filnamn.in </pre> == BESKRIVNING == '''maint/gen_xlat_defs.sh''' genererar xlat .in-filer baserat på befintliga filer och Linux UAPI-headerfiler. Skriptet extraherar konstantdefinitioner från Linuxkärnans källkod och producerar arkitekturmedvetna xlat-definitionsfiler som lämpar sig för anv...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

NAMN

maint/gen_xlat_defs.sh — generera xlat .in-filer från Linux UAPI-headerfiler

SYNOPSIS

maint/gen_xlat_defs.sh

maint/gen_xlat_defs.sh < xlat_filnamn.in

BESKRIVNING

maint/gen_xlat_defs.sh genererar xlat .in-filer baserat på befintliga filer och Linux UAPI-headerfiler. Skriptet extraherar konstantdefinitioner från Linuxkärnans källkod och producerar arkitekturmedvetna xlat-definitionsfiler som lämpar sig för användning av straces xlat-system.

Skriptet läser en befintlig xlat .in-fil från standard in, extraherar konstantnamn som matchar det angivna mönstret, slår upp deras värden i Linuxkärnans UAPI-headerfiler och skriver ut en uppdaterad .in-fil som inkluderar arkitekturspecifika värdeskillnader där sådana finns.

Skriptet upptäcker automatiskt när en konstant har olika numeriska värden på olika arkitekturer och genererar lämpliga preprocessor-direktiv, såsom #if, #elif, #else och #endif, för att hantera dessa skillnader. Det bevarar även befintliga kommentarer och direktiv från indatafilen, förutom den gamla kommentarraden som anger hur filen genererades.

FLAGGOR

-f VAL_PRINT_FMT

Anger printf-formatsträngen som ska användas för att skriva numeriska värden i utdata. Vanliga format är:

d

Decimalformat, till exempel:

42

#x

Hexadecimalt format med prefixet 0x, till exempel:

0x2a

#o

Oktalt format med prefixet 0, till exempel:

052

u

Osignerat decimalformat, till exempel:

42

-p REGEXP_PATTERN

Anger ett reguljärt uttryck som används för att matcha konstantnamn i indatafilen. Endast rader som matchar detta mönster behandlas.

Mönstret bör matcha prefixet eller namngivningskonventionen för de konstanter som ska extraheras, till exempel:

MADV_
_?MAP_
SO_

-d LINUX_SRC_DIR

Anger sökvägen till Linuxkärnans källkodskatalog. Denna katalog ska innehålla den vanliga katalogstrukturen för Linuxkärnans källkod, inklusive underkataloger under:

include/uapi/

-c COMMON_DEFS_GLOB_PATTERN

Anger ett glob-mönster för att hitta gemensamma, arkitekturoberoende definitioner i Linux UAPI-headerfilerna. Mönstret är relativt till include/uapi/ i Linuxkällkodskatalogen.

Exempel:

asm-generic/mman-common.h
asm-generic/socket.h
asm-generic/fcntl.h

-a ARCH_DEFS_FILE

Anger filnamnet för den arkitekturspecifika definitionsfilen. Skriptet söker efter denna fil i underkataloger av typen:

arch/*/include/uapi/

i Linuxkällkodskatalogen.

Exempel:

asm/mman.h
asm/socket.h
asm/fcntl.h

INDATAFORMAT

Skriptet läser en xlat .in-fil från standard in. Indatafilen kan innehålla:

Rader med konstantnamn

Rader som innehåller konstantnamn, eventuellt med avslutande blanktecken, som matchar det angivna reguljära uttrycket. Dessa slås upp i kärnans headerfiler.

Kommentarer

Rader som börjar med # eller innehåller kommentarer i stil med:

/* ... */

Dessa bevaras i utdata.

Tomma rader

Tomma rader bevaras för att bibehålla formateringen.

Direktiv

Särskilda direktiv som #sorted, #unconditional med flera bevaras.

UTDATAFORMAT

Skriptet skriver ut en uppdaterad xlat .in-fil med följande egenskaper:

Generated-by-rubrik

Första raden innehåller en kommentar som anger hur filen genererades, inklusive alla kommandoradsflaggor som användes.

Arkitekturspecifika villkor

När en konstant har olika värden mellan arkitekturer genererar skriptet preprocessor-villkor som:

#if defined __arch1__ || defined __arch2__
CONSTANT_NAME  value1
#elif defined __arch3__
CONSTANT_NAME  value2
#else
CONSTANT_NAME  value3
#endif

Bevarat innehåll

Alla kommentarer, tomma rader och direktiv från indata bevaras, förutom den gamla generated-by-raden.

EXEMPEL

Följande exempel visar vanliga användningsmönster.

Generera konstanter för kommandot madvise:

maint/gen_xlat_defs.sh -f 'd' -p 'MADV_' -d /path/to/linux \
    -c 'asm-generic/mman-common.h' -a 'asm/mman.h' \
    < src/xlat/madvise_cmds.in > src/xlat/madvise_cmds.in.new

Generera mmap-flaggkonstanter med hexadecimal utdata:

maint/gen_xlat_defs.sh -f '#x' -p '_?MAP_' -d /path/to/linux \
    -c 'asm-generic/mman*.h' -a 'asm/mman.h' \
    < src/xlat/mmap_flags.in > src/xlat/mmap_flags.in.new

Generera konstanter för öppningslägesflaggor med oktal utdata:

maint/gen_xlat_defs.sh -f '#o' -p '[_OF]' -d /path/to/linux \
    -c 'asm-generic/fcntl.h' -a 'asm/fcntl.h' \
    < src/xlat/open_mode_flags.in > src/xlat/open_mode_flags.in.new

Generera konstanter för socket-alternativ:

maint/gen_xlat_defs.sh -f 'u' -p 'SO_' -d /path/to/linux \
    -c 'asm-generic/socket.h' -a 'asm/socket.h' \
    < src/xlat/sock_options.in > src/xlat/sock_options.in.new

ARKITEKTURHANTERING

Skriptet hanterar automatiskt arkitekturspecifika skillnader i konstantvärden. Det gör följande:

  1. Slår först upp konstanten i de gemensamma, arkitekturoberoende headerfilerna för att avgöra standardvärdet.
  1. Söker därefter igenom alla arkitekturspecifika headerfiler efter andra definitioner av samma konstant.
  1. Grupperar arkitekturer med samma värde tillsammans med logiska OR-villkor.
  1. Genererar lämpliga block med #if, #elif, #else och #endif för att hantera alla variationer.

Skriptet utför även särskild hantering för vissa arkitekturalias:

parisc

Mappas till hppa i utdata.

arm64

Inkluderas när aarch64 är definierad.

x86

Expanderas till x86_64 eller i386.

SLUTSTATUS

0

Lyckades.

1

Ett fel inträffade. Detta kan bero på:

Saknade obligatoriska kommandoradsflaggor

Alla fem flaggor krävs:

-f
-p
-d
-c
-a

Ogiltig Linuxkällkodskatalog

Den angivna katalogen finns inte eller saknar den förväntade strukturen.

Misslyckad mönstermatchning

Inga konstanter hittades som matchade det angivna mönstret.

NOTERINGAR

Skriptet är utformat för att fungera med Linuxkärnans standardstruktur för källkod, där UAPI-headerfiler finns i:

include/uapi/

och arkitekturspecifika headerfiler finns i:

arch/*/include/uapi/

När en konstant inte hittas i de gemensamma headerfilerna skriver skriptet ut en varning men fortsätter behandlingen. Konstanten kommer då att visas i utdata utan ett standardvärde, och endast arkitekturspecifika definitioner inkluderas om sådana hittas.

Skriptet bevarar indatafilens befintliga struktur och formatering så långt som möjligt. Det uppdaterar endast konstantdefinitionerna och lägger till arkitekturspecifika villkor där det behövs.

SE ÄVEN

strace(1)

Dokumentationen för xlat-filformatet i:

src/xlat/README.md

ger ytterligare information om hur genererade .in-filer används.

FÖRFATTARE

Strace-utvecklarna.

COLOPHON

Denna sida är en del av projektet strace (systemanropsspårare).

Information om projektet finns på:

http://strace.io/

Om du har en felrapport för denna manualsida, skicka den till:

strace-devel@lists.sourceforge.net

Denna sida hämtades från projektets uppströms Git-arkiv:

https://github.com/strace/strace.git

Sidan hämtades den 16 januari 2026. Vid den tidpunkten var datumet för den senaste commit som hittades i arkivet den 13 januari 2026.

Om du hittar renderingsproblem i denna HTML-version av sidan, eller om du anser att det finns en bättre eller mer uppdaterad källa för sidan, eller om du har rättelser eller förbättringar av informationen i detta COLOPHON-avsnitt, som inte är en del av den ursprungliga manualsidan, skicka e-post till:

man-pages@man7.org


GEN_XLAT_DEFS.SH(1)