From nobody Mon Sep 28 10:43:23 2026 Received: from mail-vs1-f49.google.com (mail-vs1-f49.google.com [209.85.217.49]) (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 49A662F1FED for ; Sun, 23 Aug 2026 13:40:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.217.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787492444; cv=none; b=YjwSStHO5Ya8NtNwUXz3ZQJt5ySG5oDjujULZaA7UcnOSU3S1VC0oW8ZdEElHSrNqqwCpcbUb4T1Vhu/JnmrpCTApByp93mSfy3688PEoliNqdQtINeF/2iEYXK/WgWBN5L9EmbNQsezDUrW3VEMz1xpUnC5lzgpnDe5BJsQkvI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787492444; c=relaxed/simple; bh=kZ1Oi56OEuzU7NDtogCyHHnu4JanGEOA2jOlqi6H4ns=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=j5xjWWGOwgWg+SyBs2WEYY4/W4/z7Q1tBhI6JaAkDu/FQ3E7rBoq2K0DTFscwUK8do/2Vum9LRxlfWPVQ8vcCwxh7dOcOTdH0XqZZpGvwmEggxQGo7wMwsh+uq8lB2SV/MugTLi/WgC99Mw78PjMb12VVHWYd2R/nEDtr3A9tBI= 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=q9rB3g4R; arc=none smtp.client-ip=209.85.217.49 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="q9rB3g4R" Received: by mail-vs1-f49.google.com with SMTP id ada2fe7eead31-75609e844faso1910521137.0 for ; Sun, 23 Aug 2026 06:40:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787492441; x=1788097241; 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=WsCD1ZlAciR4k9XwvsYewZwbdLvQIhyGXs8rPLAqoL8=; b=q9rB3g4Rt5HtnIFR1gbuFC935DLAYHCQPTt9i8bECt30+6E6oKZ0MKLZqicDDSkk5+ MwN5I3E35sbxtBKy8EGgvJMtYHNFrJtxrnXLwpYiTOj8l/Es7/zhSLblB4flh3v3eJX5 SyyCWlU9Xe933q/LqX1rcgRH4DBrcARqROjNg3CWeNxE8XRv1NPv0M0wEgOvdsE0yRwj 4qeUsDIsduiR8mFwVVmZE+w7Nx+UEi1wRp15daLY0hkhZNA55eAgqGbkFKOWMaortXBB 9n0mv9pqY4v9LgobZpnsT2KgIes5pCofPtbyzPJoHHSPxRQt82ZMqKpGXM5Jj5fuctSp Oicw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787492441; x=1788097241; 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=WsCD1ZlAciR4k9XwvsYewZwbdLvQIhyGXs8rPLAqoL8=; b=qGnl/XMooMhmLu+Ge0O4PoXgH/a1AOYIvlqzlT9AKUGBDiU5aM3NroDJY2lp5Gk7/t bOD2cJRv3AGIqptw8wQ0JybvqIf+Sbt3AN6l7bYTMm/ZkJKkXiIRLRJ4NFpvo+DF9JRB 2/9E3fFi42J7IrOU4idgM/8RuGKz5swJ7yro8ZD2Ctjd8pOouCxxj9LWcbZXQmQDJKjg CWJWQU2e9s1wBuKzH8m5ytDHAoL2CqRsBNnOcJtuYVfUSIpgADtdpAg4fahLenaUPpC+ j/PF0Ynmw24oF1TCXLUZUR5lYGV1eBQB9ns5nHNnrVuzl6lgm493pRi9V1E0tSLwJYnw fF4A== X-Forwarded-Encrypted: i=1; AHgh+Ro8TJg2pFmWOEkJO1jdC15kgskxnJRGEjZWTOewVu9ameAaD9UAgEZLTQ4+rsj6nZz347q60wgt8sWyc7c=@vger.kernel.org X-Gm-Message-State: AFuF++mMVB6twNGikMx/C6RaAE40Agge1c8g9rQoZy+gKmxHh3DblnFd 24RoduOAgK+4zeDwJpWzExVjSqxlf37rUgzPGx8mRmFuLmiO3rWaxv/GplWfAnjS2xc= X-Gm-Gg: AR+sD13Js+yPfBQDLjU/AWJll2kvaMvIR2/YsxyHjKGpD3+21BBwlNjZfyjpGrG+UuS Bd2BWpQqDjW4zT/B3wB6ECYLCzW6mhfbx+Qoh091sio6LN+zvutDaR5Ec44CQ2lQ/mXNW0pwVAk LbbYIZENmiSXbPO14ZyL9nkOj9tq4f5bnjAOSe0kS0iFxCyFZGd08Se0LnFkYtqFZ4BG1KBqRZJ tcHP6LAfGWf1vVU4E3pfAl/GKqGK9Qmdx9C6rbY9P3zewFH7zH3w5hqe9ntb3jQ8rl3QDq5Aklo 8FMJRnou0PdX7sE4GvIOJ8Cu9uNj+GJDqbBxsaH6tg/9mzGGVYL9IKgu/B54K66RQq/RVRc8rG5 +Vscxxuda0A/YWyLrd856eBwJsZI2/LtlBSJVlxtrAhu7cctTGcHpjt8KIIebdPli9zAXfdC+qG w345o1Y3dnc5nbUeVC1oeJJTAs9DuJ2vwbHkEUqUBJX5xVwjuZa9ThdOKnX0mgiWGUNt3zyx5WP cqH X-Received: by 2002:a05:6102:3032:b0:747:560c:e7e0 with SMTP id ada2fe7eead31-778f05babd5mr4839961137.1.1787492440938; Sun, 23 Aug 2026 06:40:40 -0700 (PDT) Received: from [192.168.27.123] ([2804:7ca0:8015:5901:a749:ae20:8953:b2b7]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-97c836fa8bdsm4899820241.9.2026.08.23.06.40.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Aug 2026 06:40:40 -0700 (PDT) From: Lucas Adryell Ramalho Date: Sun, 23 Aug 2026 10:39:28 -0300 Subject: [PATCH v3] 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: <20260823-ptbr-stable-api-nonsense-v3-1-58c9beebf9bd@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/33NSwrCMBCA4atI1o7k0ah15T3ERZpHO9AmJSlBK b27aXHRjcJs/oH5ZibJRrSJ3A4ziTZjwuBLiOOB6E751gKa0oRTfqZXVsM4NRHSpJreghoRfPD JlgFdCcMrqZSTNSnnY7QOXxv9eJbuME0hvrdPma3bL8rpbzQzYEBFxZyUzmpu7u2gsD/pMJAVz XwPsT8QL5CjF+MqRZ0WzR5aluUDLO8n0QkBAAA= 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=1787492437; l=13963; i=lucasadramalho@gmail.com; h=from:subject:message-id; bh=kZ1Oi56OEuzU7NDtogCyHHnu4JanGEOA2jOlqi6H4ns=; b=xR6SmKcYkG8JvV7L0+ZO6Jlrgk4GBmKGOw+Tnsg4lp4GADhpwJJ/r0bcemgfJQLvwc75EhbbU OSra13c8AheA3vJuk0pYpHLXmYUj6rPpX1xa75aQWyDCWz8WDnWxrv7 X-Developer-Key: i=lucasadramalho@gmail.com; a=ed25519; pk=m3TQ0mH3ARCg0EdGRQWOTlBoFnDen6VWMNGjXW+W4NM= Translate Documentation/process/stable-api-nonsense.rst into Brazilian Portuguese. Assisted-by: ChatGPT:GPT-5.5 Signed-off-by: Lucas Adryell Ramalho Acked-by: Daniel Pereira --- Changes in v3: - Remove blank lines between bullet points, as Daniel suggested, to match the style used in the other kernel documentation files. - Link to v2: https://lore.kernel.org/r/20260821-ptbr-stable-api-nonsense-v= 2-1-f07df4a0fc3b@gmail.com Changes in v2: - Remove the unnecessary top-of-file label that caused a duplicate-label wa= rning during the documentation build. - Add disclosure for generative tools used while preparing and reviewing th= e translation. - Build the documentation with make htmldocs and verify that the translated= document introduces no new warnings or errors. - Link to v1: https://lore.kernel.org/r/20260820-ptbr-stable-api-nonsense-v= 1-1-0341f55fec2d@gmail.com I used ChatGPT and DeepL to help me clarify some Portuguese sentences that = did not sound entirely natural or clear to me. --- Documentation/translations/pt_BR/process/index.rst | 1 + .../pt_BR/process/stable-api-nonsense.rst | 207 +++++++++++++++++= ++++ 2 files changed, 208 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..8ae94a760 --- /dev/null +++ b/Documentation/translations/pt_BR/process/stable-api-nonsense.rst @@ -0,0 +1,207 @@ +.. SPDX-License-Identifier: GPL-2.0 + +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