From nobody Tue Sep 29 14:57:27 2026 Received: from mail-vs1-f52.google.com (mail-vs1-f52.google.com [209.85.217.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B45838E10C for ; Thu, 20 Aug 2026 23:12:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.217.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787267572; cv=none; b=pFoH4ioKzDXwrCtsLE1bisUiNqarNRLigCG5KZziuafTajWQGbPTnrl4d1VLnDgIG/xn5qvqhy7iVIX+QGw4CJVNs8bIWmwVt+NyHn6up0aRFUyujGR+a/1CjaUfsaWAaObz9fRInhXuk2Ezl6YRLF0hauAetH4JdVFWU5eRgfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787267572; c=relaxed/simple; bh=24NYxPeWqQmRT0v+q2u/XbxwBG9JeipjwM4mT00PYTg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=VIgYf2EzXc7Vx8fz2SEwdvIz+97CZ6hFLvGCjDPrNmlt+rYNNlVI5oZHmS4bY3EqFGzwrOu+mNZ8dR2QeAtRWR3x6A7VZEGQD3/MJZZgepCtTRvWgW8L9HsFHojxbwHnOP+p8nxy3NZlqjblbKT5gwLJ3DEQdSfWf1mDTNqPp/8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=JykDsCZO; arc=none smtp.client-ip=209.85.217.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JykDsCZO" Received: by mail-vs1-f52.google.com with SMTP id ada2fe7eead31-74ab99038afso317387137.3 for ; Thu, 20 Aug 2026 16:12:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787267569; x=1787872369; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=sKQ6DBFkwJNCPzIGxLWry2KzNG21hL3BRh0DyOKG/pA=; b=JykDsCZOCqlyFsuzgtVSqZAqwN69EDv5oMLqjJ86sNC26Xfo7M61WG24PJNkw+ff0A OT2kBdzCSg8muYF8BdM+hKKpF+OeLAbhMGQvE/mlncnBr3Z5sq6m5ir3nnvRK9txkgPb msGOHOY1oYqmqSPYHF7ffQz00Rrldbz+wma2Sg+IeTuwB5HB2YaJxnvltDC2wfiGIixv ydhmpHWcH0TrffRlPsx+zuFEM8JyFbmmh3KC/xqNjAEy2eJ1/P2VvjIeUFbyRYsV4LFx 1+qf7iEpIN+sMxkiYOiCjzUYWjxpcdBATWgF6jFCbqk8ZKLdxRZRLxI+hvdAFoQrxcc5 HYmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787267569; x=1787872369; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=sKQ6DBFkwJNCPzIGxLWry2KzNG21hL3BRh0DyOKG/pA=; b=sDAJrx97pXo7AGewTlQXqoGbrduxVYlFELYhfA7seZA33gxlQyQL1aH+DeNGPRoNCg Heq986PpomrkSKL14nDYQKsxKro00WRNJFqqlNsWIm4l1l+vjAPSWcbw11SfZbPVP6iz rIZeiXQJ/+hMv5T8bJMU4iBL9BqCPvyQJCE2NUWIGrl6CoIFkgscWCeueFncG0CnVTBj WdgP3+R7+ZmFldu9tZYRXiH9iAgrOnyoJvJew46P1YzuLTzaQzDh6PaqUKNUM7o7dU8v rr5za8V4K78NLxNDdI62aJWbz1wxUR3VKvG/qqtdAMN4pZeZP5gH4M0ly+vtg8t8zPC7 aUTw== X-Forwarded-Encrypted: i=1; AHgh+Rq5piHIzZez60Idzgv4UDhIBCXVQBGEFIe/uMnRQIzWiMcsjCVPSTrGMrRRZexNc7h7gVSsgLYpa4WOqYg=@vger.kernel.org X-Gm-Message-State: AFuF++nFQeuVX/cVrRQ17+7U7ei27tymQFcBNKLl042BweM1qAvGInps v/ywo1n2k/q2AIDrxoMqDN8CDduB27JXczQpbLpgEI0fBmTZvvMisXOg X-Gm-Gg: AR+sD10S9IM+tqstYRyv23I5FYc33dxHCe5uGgIHDUvSd8qaVARYn1SvnLv8ujl6gL5 B6/g9ANnYvB9qPlJEbnefP/qVPKoArPc5OBdL2L/0vSJCtYAi/9Y5pdYm4QziWtXIeAcQmEobAN yjLnV9WCtxoR5ijdBa01tn1s8XyvttbKRnyaYSjrtDR8FZP+aoP3xvAX3P626r3i3U1MhDR47br n6d+Q8uDsP3NBOf7DELSLD8O95aL/ZT32LErBlahariaK2ynFS2m44EDKJyxejeaDx1agqTJklg bzd0/NBsEKjCcRFikEPSmmpRcqvN+ixb0h2gbwjPGvSmzEk8zgr1qShHVdc6CoKljQhmj+5Ol58 6wiWzbDaSpr3qzv4M3QzZyYbKb3Mi+DYGalYHpgImFY7yr0vTFcnLr1XRFVJgYVFDKBW/2qnfG8 vusPNjE/Gqcjy63Fe5Kxp5UoSMnDIM++zRTLDXNQ6pPa/x8KuVVj51W33Wj7FYxv5JGUR2yU5dI uHkF0RNtQ== X-Received: by 2002:a05:6102:3f9f:b0:778:9429:d51f with SMTP id ada2fe7eead31-77a64a6ab62mr1039163137.14.1787267569309; Thu, 20 Aug 2026 16:12:49 -0700 (PDT) Received: from [10.112.196.110] ([187.9.129.181]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-777ddc7edfasm7692560137.12.2026.08.20.16.12.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 16:12:48 -0700 (PDT) From: Lucas Adryell Ramalho Date: Thu, 20 Aug 2026 20:12:34 -0300 Subject: [PATCH] docs: translations: pt_BR: translate stable-api-nonsense.rst Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260820-ptbr-stable-api-nonsense-v1-1-0341f55fec2d@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/x2MSQqAMAwAvyI5G9C6oH5FPEQbNSC1NCKC9O8WY S5zmHlBOQgrDNkLgW9ROV2SMs9g2cltjGKTgylMW3Rlj/6aA+pF88FIXtCdTjmBS11ZUzdEa9N Dyn3gVZ5/PU4xfkG3xK1qAAAA X-Change-ID: 20260819-ptbr-stable-api-nonsense-c43d245aaf59 To: Daniel Pereira , Jonathan Corbet , Shuah Khan , Randy Dunlap Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Lucas Adryell Ramalho X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787267565; l=13157; i=lucasadramalho@gmail.com; h=from:subject:message-id; bh=24NYxPeWqQmRT0v+q2u/XbxwBG9JeipjwM4mT00PYTg=; b=U068mOlixVO2CiVy2CARiJ4dcVoMKdgPLb2wZi++6/3rR4Tm6n/5OhuqgQMSZjgLldNKrm2/G NHoMBbEHwf2BxH0V9CYCjniY5oFoWSShY10MvklIK5niJEU36LgE2x0 X-Developer-Key: i=lucasadramalho@gmail.com; a=ed25519; pk=m3TQ0mH3ARCg0EdGRQWOTlBoFnDen6VWMNGjXW+W4NM= Translate Documentation/process/stable-api-nonsense.rst into Brazilian Portuguese. Signed-off-by: Lucas Adryell Ramalho --- Documentation/translations/pt_BR/process/index.rst | 1 + .../pt_BR/process/stable-api-nonsense.rst | 218 +++++++++++++++++= ++++ 2 files changed, 219 insertions(+) diff --git a/Documentation/translations/pt_BR/process/index.rst b/Documenta= tion/translations/pt_BR/process/index.rst index eda2a3fc5..1fb2f325f 100644 --- a/Documentation/translations/pt_BR/process/index.rst +++ b/Documentation/translations/pt_BR/process/index.rst @@ -58,6 +58,7 @@ Estas s=C3=A3o as regras pelas quais tentamos viver na co= munidade do kernel Interpreta=C3=A7=C3=A3o do C=C3=B3digo de Conduta do Kernel Linux Modelos de Maturidade para Contribui=C3=A7=C3=A3o no Kernel Linux Declara=C3=A7=C3=A3o sobre Drivers do Kernel + A interface de drivers do kernel Linux Estilo de gerenciamento do kernel Linux Conclave (Continuidade do projeto) =20 diff --git a/Documentation/translations/pt_BR/process/stable-api-nonsense.r= st b/Documentation/translations/pt_BR/process/stable-api-nonsense.rst new file mode 100644 index 000000000..dd3dc3e8a --- /dev/null +++ b/Documentation/translations/pt_BR/process/stable-api-nonsense.rst @@ -0,0 +1,218 @@ +.. SPDX-License-Identifier: GPL-2.0 + +.. _stable_api_nonsense: + +A interface de drivers do kernel Linux +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +(todas as suas perguntas respondidas e mais algumas) + +Greg Kroah-Hartman + +Este texto foi escrito para tentar explicar por que o Linux **n=C3=A3o pos= sui uma +interface bin=C3=A1ria do kernel nem uma interface est=C3=A1vel do kernel*= *. + +.. note:: + + Observe que este artigo descreve as interfaces **internas do kernel**, = e n=C3=A3o + as interfaces entre o kernel e o espa=C3=A7o de usu=C3=A1rio. + + A interface entre o kernel e o espa=C3=A7o de usu=C3=A1rio =C3=A9 aquel= a utilizada pelos + aplicativos: a interface de chamadas de sistema (syscalls). Essa + interface =C3=A9 **muito** est=C3=A1vel ao longo do tempo e n=C3=A3o se= r=C3=A1 quebrada. Tenho + programas antigos, compilados em uma vers=C3=A3o do kernel anterior =C3= =A0 0.9 e alguma + coisa, que ainda funcionam perfeitamente na vers=C3=A3o mais recente do= kernel + 2.6. Essa =C3=A9 a interface cuja estabilidade os usu=C3=A1rios e desen= volvedores de + aplicativos podem considerar garantida. + + +Resumo executivo +---------------- + +Voc=C3=AA acha que quer uma interface est=C3=A1vel do kernel, mas, na verd= ade, n=C3=A3o quer, +e nem sabe disso. O que voc=C3=AA realmente quer =C3=A9 um driver que cont= inue +funcionando de maneira est=C3=A1vel, e isso s=C3=B3 =C3=A9 poss=C3=ADvel s= e o seu driver estiver +na =C3=A1rvore principal do kernel. Voc=C3=AA tamb=C3=A9m obt=C3=A9m muito= s outros benef=C3=ADcios se +o seu driver fizer parte da =C3=A1rvore principal do kernel. S=C3=A3o esse= s benef=C3=ADcios +que ajudaram a tornar o Linux um sistema operacional t=C3=A3o robusto, est= =C3=A1vel e +maduro =E2=80=94 justamente a raz=C3=A3o pela qual voc=C3=AA o est=C3=A1 u= sando. + + +Introdu=C3=A7=C3=A3o +---------- + +Apenas quem escreve drivers para o kernel precisa se preocupar com as muda= n=C3=A7as +nas interfaces internas do kernel. Para a grande maioria das pessoas, essas +interfaces nem sequer s=C3=A3o vis=C3=ADveis e tampouco s=C3=A3o motivo de= preocupa=C3=A7=C3=A3o. + +Antes de mais nada, n=C3=A3o abordarei **nenhuma** quest=C3=A3o jur=C3=ADd= ica relacionada a +c=C3=B3digo-fonte fechado, c=C3=B3digo-fonte oculto, blobs bin=C3=A1rios, = wrappers de +c=C3=B3digo-fonte ou qualquer outro termo usado para descrever drivers do = kernel +cujo c=C3=B3digo-fonte n=C3=A3o seja disponibilizado sob a GPL. Consulte u= m advogado +caso tenha alguma d=C3=BAvida jur=C3=ADdica. Sou programador e, portanto, = descreverei +aqui apenas as quest=C3=B5es t=C3=A9cnicas (isso n=C3=A3o significa que as= quest=C3=B5es +jur=C3=ADdicas sejam pouco importantes; elas s=C3=A3o reais e voc=C3=AA pr= ecisa estar sempre +ciente delas). + +Portanto, h=C3=A1 dois t=C3=B3picos principais: interfaces bin=C3=A1rias d= o kernel e +interfaces est=C3=A1veis de c=C3=B3digo-fonte do kernel. Ambos dependem um= do outro, +mas discutiremos primeiro a parte referente =C3=A0s interfaces bin=C3=A1ri= as para +deix=C3=A1-la de lado. + + +Interface bin=C3=A1ria do kernel +--------------------------- + +Supondo que tiv=C3=A9ssemos uma interface est=C3=A1vel de c=C3=B3digo-font= e para o kernel, +uma interface bin=C3=A1ria surgiria naturalmente tamb=C3=A9m, certo? Errad= o. Considere +os seguintes fatos sobre o kernel Linux: + + - Dependendo da vers=C3=A3o do compilador C utilizada, diferentes estrut= uras de + dados do kernel ter=C3=A3o diferentes alinhamentos e poder=C3=A3o at= =C3=A9 mesmo incluir + fun=C3=A7=C3=B5es de maneiras distintas (por exemplo, tornando determi= nadas fun=C3=A7=C3=B5es + inline ou n=C3=A3o). A organiza=C3=A7=C3=A3o das fun=C3=A7=C3=B5es ind= ividuais n=C3=A3o =C3=A9 t=C3=A3o importante, + mas as diferen=C3=A7as no preenchimento das estruturas de dados s=C3= =A3o muito + importantes. + + - Dependendo das op=C3=A7=C3=B5es selecionadas durante a compila=C3=A7= =C3=A3o do kernel, uma + grande variedade de comportamentos pode ser assumida pelo kernel: + + - diferentes estruturas podem conter campos diferentes; + - algumas fun=C3=A7=C3=B5es podem nem sequer ser implementadas (por = exemplo, + determinados bloqueios s=C3=A3o completamente eliminados durante a + compila=C3=A7=C3=A3o em kernels sem SMP); + - a mem=C3=B3ria dentro do kernel pode ser alinhada de maneiras dife= rentes, + dependendo das op=C3=A7=C3=B5es de compila=C3=A7=C3=A3o. + + - O Linux =C3=A9 executado em uma grande variedade de arquiteturas de + processadores. N=C3=A3o h=C3=A1 como drivers bin=C3=A1rios compilados = para uma arquitetura + funcionarem corretamente em outra. + +V=C3=A1rios desses problemas podem ser contornados simplesmente compilando= o m=C3=B3dulo +para uma configura=C3=A7=C3=A3o espec=C3=ADfica e exata do kernel, utiliza= ndo exatamente o +mesmo compilador C empregado na compila=C3=A7=C3=A3o do kernel. Isso =C3= =A9 suficiente caso +voc=C3=AA queira fornecer um m=C3=B3dulo para uma determinada vers=C3=A3o = de uma distribui=C3=A7=C3=A3o +Linux espec=C3=ADfica. Por=C3=A9m, multiplique essa =C3=BAnica compila=C3= =A7=C3=A3o pelo n=C3=BAmero de +distribui=C3=A7=C3=B5es Linux existentes e pelo n=C3=BAmero de vers=C3=B5e= s suportadas de cada +distribui=C3=A7=C3=A3o e voc=C3=AA rapidamente ter=C3=A1 um pesadelo de di= ferentes op=C3=A7=C3=B5es de +compila=C3=A7=C3=A3o em diferentes vers=C3=B5es. Al=C3=A9m disso, cada ver= s=C3=A3o de uma distribui=C3=A7=C3=A3o +Linux cont=C3=A9m v=C3=A1rios kernels, cada um ajustado para diferentes ti= pos de +hardware (diferentes tipos de processadores e diferentes op=C3=A7=C3=B5es)= . Portanto, +mesmo para uma =C3=BAnica vers=C3=A3o, voc=C3=AA precisar=C3=A1 criar v=C3= =A1rias vers=C3=B5es do seu m=C3=B3dulo. + +Acredite em mim: com o tempo, voc=C3=AA enlouquecer=C3=A1 se tentar oferec= er suporte a +esse tipo de distribui=C3=A7=C3=A3o. Aprendi isso da maneira mais dif=C3= =ADcil h=C3=A1 muito +tempo... + +Interfaces est=C3=A1veis de c=C3=B3digo-fonte do kernel +---------------------------------------------- + +Esse =C3=A9 um t=C3=B3pico um pouco mais "vol=C3=A1til" se voc=C3=AA conve= rsar com algu=C3=A9m que est=C3=A1 +tentando manter atualizado, ao longo do tempo, um driver do kernel Linux q= ue +n=C3=A3o est=C3=A1 na =C3=A1rvore principal do kernel. + +O desenvolvimento do kernel Linux =C3=A9 cont=C3=ADnuo e ocorre em ritmo a= celerado, +sem desacelerar. Por isso, os desenvolvedores do kernel encontram bugs nas +interfaces existentes ou descobrem maneiras melhores de fazer as coisas. +Quando isso acontece, eles corrigem as interfaces atuais para que funcionem +melhor. Nesse processo, nomes de fun=C3=A7=C3=B5es podem mudar, estruturas= podem crescer +ou diminuir e par=C3=A2metros de fun=C3=A7=C3=B5es podem ser reformulados.= Quando isso +acontece, todos os locais dentro do kernel que utilizam essa interface s= =C3=A3o +corrigidos ao mesmo tempo, garantindo que tudo continue funcionando +corretamente. + +Como exemplos espec=C3=ADficos disso, as interfaces USB internas do kernel +passaram por pelo menos tr=C3=AAs reformula=C3=A7=C3=B5es diferentes ao lo= ngo da exist=C3=AAncia +desse subsistema. Essas reformula=C3=A7=C3=B5es foram feitas para resolver= diversos +problemas: + + - Uma mudan=C3=A7a de um modelo s=C3=ADncrono de fluxos de dados para um= modelo + ass=C3=ADncrono. Isso reduziu a complexidade de v=C3=A1rios drivers e = aumentou a + taxa de transfer=C3=AAncia de todos os drivers USB, de modo que atualm= ente + executamos quase todos os dispositivos USB na maior velocidade poss=C3= =ADvel. + + - Foi feita uma mudan=C3=A7a na maneira como os pacotes de dados eram al= ocados + pelos drivers USB a partir do n=C3=BAcleo USB, de modo que todos os dr= ivers + passaram a precisar fornecer mais informa=C3=A7=C3=B5es ao n=C3=BAcleo= USB, corrigindo + diversos deadlocks documentados. + +Isso contrasta fortemente com v=C3=A1rios sistemas operacionais de c=C3=B3= digo fechado, +que tiveram de manter suas interfaces USB antigas ao longo do tempo. Isso +permite que novos desenvolvedores utilizem acidentalmente interfaces antig= as +e fa=C3=A7am as coisas de maneira inadequada, prejudicando a estabilidade = do +sistema operacional. + +Em ambos os casos, todos os desenvolvedores concordaram que essas eram +mudan=C3=A7as importantes que precisavam ser feitas, e elas foram realizad= as com +relativamente pouco esfor=C3=A7o. Se o Linux tivesse de garantir a preserv= a=C3=A7=C3=A3o de +uma interface de c=C3=B3digo-fonte est=C3=A1vel, uma nova interface teria = de ser criada, +enquanto a interface antiga e defeituosa teria de continuar sendo mantida = ao +longo do tempo, resultando em trabalho adicional para os desenvolvedores U= SB. +Como todos os desenvolvedores USB do Linux realizam esse trabalho em seu +pr=C3=B3prio tempo, pedir que programadores fa=C3=A7am trabalho extra, sem= nenhum +benef=C3=ADcio e gratuitamente, n=C3=A3o =C3=A9 uma possibilidade. + +Quest=C3=B5es de seguran=C3=A7a tamb=C3=A9m s=C3=A3o muito importantes par= a o Linux. Quando um +problema de seguran=C3=A7a =C3=A9 encontrado, ele =C3=A9 corrigido em um p= er=C3=ADodo muito curto. +Em diversas ocasi=C3=B5es, isso fez com que interfaces internas do kernel = fossem +reformuladas para impedir que o problema de seguran=C3=A7a ocorresse. Quan= do isso +acontece, todos os drivers que utilizam essas interfaces tamb=C3=A9m s=C3= =A3o corrigidos +ao mesmo tempo, garantindo que o problema de seguran=C3=A7a seja resolvido= e n=C3=A3o +possa reaparecer acidentalmente no futuro. Se as interfaces internas n=C3= =A3o +pudessem ser alteradas, n=C3=A3o seria poss=C3=ADvel corrigir esse tipo de= problema de +seguran=C3=A7a e garantir que ele n=C3=A3o voltasse a ocorrer. + +As interfaces do kernel s=C3=A3o aprimoradas ao longo do tempo. Se ningu= =C3=A9m estiver +utilizando uma determinada interface, ela =C3=A9 removida. Isso garante qu= e o +kernel permane=C3=A7a o menor poss=C3=ADvel e que todas as interfaces exis= tentes possam +ser testadas da melhor maneira poss=C3=ADvel (=C3=A9 praticamente imposs= =C3=ADvel testar +adequadamente a validade de interfaces que n=C3=A3o s=C3=A3o utilizadas). + + +O que fazer +----------- + +Ent=C3=A3o, se voc=C3=AA possui um driver do kernel Linux que n=C3=A3o est= =C3=A1 na =C3=A1rvore +principal do kernel, o que voc=C3=AA, como desenvolvedor, deve fazer? Dist= ribuir +um driver bin=C3=A1rio para cada vers=C3=A3o diferente do kernel em cada d= istribui=C3=A7=C3=A3o +=C3=A9 um pesadelo, e tentar acompanhar uma interface do kernel que est=C3= =A1 em +constante mudan=C3=A7a tamb=C3=A9m =C3=A9 uma tarefa dif=C3=ADcil. + +Simples: coloque seu driver na =C3=A1rvore principal do kernel (lembre-se = de que +estamos falando aqui de drivers distribu=C3=ADdos sob uma licen=C3=A7a com= pat=C3=ADvel com +a GPL; se seu c=C3=B3digo n=C3=A3o se enquadra nessa categoria, boa sorte,= voc=C3=AA est=C3=A1 +por conta pr=C3=B3pria aqui, seu parasita). Se seu driver estiver na =C3= =A1rvore e uma +interface do kernel mudar, ele ser=C3=A1 corrigido pela pr=C3=B3pria pesso= a que realizou +a altera=C3=A7=C3=A3o no kernel. Isso garante que seu driver continue semp= re compil=C3=A1vel +e funcionando ao longo do tempo, exigindo muito pouco esfor=C3=A7o de sua = parte. + +Os excelentes efeitos colaterais de ter seu driver na =C3=A1rvore principa= l do +kernel s=C3=A3o: + + - A qualidade do driver aumentar=C3=A1, enquanto os custos de manuten=C3= =A7=C3=A3o + (para o desenvolvedor original) diminuir=C3=A3o. + + - Outros desenvolvedores adicionar=C3=A3o funcionalidades ao seu driver. + + - Outras pessoas encontrar=C3=A3o e corrigir=C3=A3o bugs no seu driver. + + - Outras pessoas encontrar=C3=A3o oportunidades de otimiza=C3=A7=C3=A3o = no seu driver. + + - Outras pessoas atualizar=C3=A3o o driver para voc=C3=AA quando mudan= =C3=A7as em + interfaces externas exigirem isso. + + - O driver ser=C3=A1 automaticamente distribu=C3=ADdo por todas as distr= ibui=C3=A7=C3=B5es + Linux, sem que seja necess=C3=A1rio pedir =C3=A0s distribui=C3=A7=C3= =B5es que o adicionem. + +Como o Linux oferece suporte, "pronto para uso", a um n=C3=BAmero maior de +dispositivos diferentes do que qualquer outro sistema operacional, e ofere= ce +suporte a esses dispositivos em mais arquiteturas de processadores diferen= tes +do que qualquer outro sistema operacional, esse modelo comprovado de +desenvolvimento deve estar fazendo alguma coisa certa :) + + +------ + +Agradecimentos a Randy Dunlap, Andrew Morton, David Brownell, Hanna Linder, +Robert Love e Nishanth Aravamudan pela revis=C3=A3o e pelos coment=C3=A1ri= os sobre +este documento. --- base-commit: 791e420360669d55b7f90ca0c6d61b10e4992aec change-id: 20260819-ptbr-stable-api-nonsense-c43d245aaf59 Best regards, --=20 Lucas Adryell Ramalho