.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2012 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH delete_module 2 "2 maja 2024 r." "Linux man\-pages 6.8" .SH NAZWA delete_module \- usuwa (odłącza) moduł jądra .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP /* Definicja stałych \fBO_*\fP */ \fB#include \fP /* Definicja stałych \fBSYS_*\fP */ \fB#include \fP .P \fBint syscall(SYS_delete_module, const char *\fP\fIname\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .P \fIUwaga\fP: glibc nie udostępnia opakowania dla \fBdelete_module\fP(), co wymusza użycie \fBsyscall\fP(2). .SH OPIS Wywołanie systemowe \fBdelete_module\fP() próbuje usunąć nieużywany, ładowalny wpis modułu określony nazwą \fIname\fP. Jeśli moduł posiada funkcję \fIexit\fP, to jest ona wykonywana przed usunięciem modułu. Argument \fIflags\fP służy do modyfikacji zachowania wywołania systemowego, zgodnie z opisem poniżej. To wywołanie systemowe wymaga uprzywilejowania. .P Próba usunięcia modułu zachodzi zgodnie z poniższymi regułami: .IP (1) 5 Jeśli występują inne załadowane moduły zależące od tego modułu (tzn. odniesienia do symboli w nim zdefiniowanych), to wywołanie zawodzi. .IP (2) W przeciwnym razie, jeśli licznik odniesień do modułu (tzn. liczba procesów używających go aktualnie) wynosi zero, to moduł jest natychmiast usuwany. .IP (3) .\" O_TRUNC == KMOD_REMOVE_FORCE in kmod library .\" O_NONBLOCK == KMOD_REMOVE_NOWAIT in kmod library Jeśli moduł ma niezerowy licznik odniesień, to zachowanie zależy od bitów ustawionych w \fIflags\fP. Przy zwykłym użyciu (zob. UWAGI), podany jest zawsze znacznik \fBO_NONBLOCK\fP, dodatkowo można też podać znacznik \fBO_TRUNC\fP. .IP Różne zestawienia \fIflags\fP dają następujący rezultat: .RS .TP \fBflags == O_NONBLOCK\fP Wywołanie natychmiast zwraca z błędem. .TP \fBflags == (O_NONBLOCK | O_TRUNC)\fP Moduł jest natychmiast usuwany, niezależnie od tego, czy posiada zerowy licznik odniesień. .TP \fB(flags & O_NONBLOCK) == 0\fP Jeśli we \fIflags\fP nie podano \fBO_NONBLOCK\fP, to zachodzą następujące kroki: .RS .IP \[bu] 3 Moduł jest oznaczany, dzięki czemu niedozwolone są nowe odniesienia. .IP \[bu] Jeśli licznik odniesień modułu jest niezerowy, to wywołujący jest umieszczany w nieprzerywalnym stanie snu (\fBTASK_UNINTERRUPTIBLE\fP) do osiągnięcia przez licznik wartości zero, kiedy wywołanie jest odblokowywane. .IP \[bu] Moduł jest usuwany w zwykły sposób. .RE .RE .P Znacznik \fBO_TRUNC\fP ma jeden dodatkowy skutek wobec powyższych reguł. Domyślnie, jeśli moduł ma funkcję \fIinit\fP, lecz nie posiada funkcji \fIexit\fP, to próba usunięcia modułu zawodzi. Jeśli jednak podano \fBO_TRUNC\fP to ten warunek jest pomijany. .P Używanie znacznika \fBO_TRUNC\fP jest niebezpieczne! Jeśli jądro nie zostało zbudowane z \fBCONFIG_MODULE_FORCE_UNLOAD\fP, znacznik jest po cichu ignorowany (zwykle \fBCONFIG_MODULE_FORCE_UNLOAD\fP jest włączony). Używanie tego znacznika prowadzi do skażenia jądra (TAINT_FORCED_RMMOD). .SH "WARTOŚĆ ZWRACANA" Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest \-1 i ustawiane jest \fIerrno\fP wskazując błąd. .SH BŁĘDY .TP \fBEBUSY\fP Moduł nie jest \[Bq]żywy\[rq] (tzn. wciąż jest inicjowany lub został już oznaczony do usunięcia) lub moduł posiada funkcję \fIinit\fP, ale nie ma funkcji \fIexit\fP a we \fIflags\fP nie podano \fBO_TRUNC\fP. .TP \fBEFAULT\fP \fIname\fP odnosi się do położenia, które jest poza dostępną dla procesu przestrzenią adresową. .TP \fBENOENT\fP Nie istnieje moduł o tej nazwie. .TP \fBEPERM\fP Wywołujący nie był uprzywilejowany (nie posiadał przywileju (ang. capability) \fBCAP_SYS_MODULE\fP) lub usuwanie modułów jest wyłączone (zob. \fI/proc/sys/kernel/modules_disabled\fP w \fBproc\fP(5)). .TP \fBEWOULDBLOCK\fP Od tego modułu zależą inne moduły; albo we \fIflags\fP podano \fBO_NONBLOCK\fP, lecz licznik odniesień tego modułu jest niezerowy i we \fIflags\fP nie podano \fBO_TRUNC\fP. .SH STANDARDY Linux. .SH HISTORIA Wywołanie systemowe \fBdelete_module\fP() nie jest obsługiwane przez glibc. W nagłówkach glibc nie ma jego deklaracji, ale z powodów pewnych zaszłości historycznych wersje przed glibc 2.23 eksportowały ABI dla tego wywołania systemowego. Z tego powodu, aby go użyć wystarczy (przed glibc 2.23) manualnie zadeklarować interfejs w swoim kodzie; alternatywnie można wywołać to wywołanie systemowe za pomocą \fBsyscall\fP(2). .SS "Linux 2.4 i wcześniejsze" W Linuksie 2.4 i wcześniejszych, wywołanie systemowe przyjmowało jedynie jeden argument: .P \fB int delete_module(const char *\fP\fIname\fP\fB);\fP .P Gdy \fIname\fP wynosi NULL, wszystkie nieużywane moduły oznaczone auto\-clean są usuwane. .P Pewne dalsze detale na temat różnic w zachowaniu \fBdelete_module\fP() w Linuksie 2.4 i wcześniejszych \fInie\fP są obecnie wytłumaczone w niniejszym podręczniku. .SH UWAGI Nieprzerywalny stan snu, który może się zdarzyć, gdy pominie się \fBO_NONBLOCK\fP z \fIflags\fP jest uważany za niepożądany, ponieważ śpiący proces pozostawiany jest w stanie nieśmiertelności. Według stanu na Linux 3.7, podawanie \fBO_NONBLOCK\fP jest opcjonalne, ale w przyszłych jądrach prawdopodobnie stanie się to obowiązkowe. .SH "ZOBACZ TAKŻE" \fBcreate_module\fP(2), \fBinit_module\fP(2), \fBquery_module\fP(2), \fBlsmod\fP(8), \fBmodprobe\fP(8), \fBrmmod\fP(8) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .