From nobody Sat Sep 26 13:47:22 2026 Received: from mail-yw1-f178.google.com (mail-yw1-f178.google.com [209.85.128.178]) (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 A0704403EB3 for ; Mon, 31 Aug 2026 23:26:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788218803; cv=none; b=L2QMYVCLJbNTbJv8KNIk7eBanc8nkOp9lJTopme8cdQVdn+gQvApk/x6mHAgDYRjA1C7yVGF0aXKqAR6Xkt1aYdt8vSt2Ji8zZMGhpU4IwsdN5VJVAT/BbWERam6s+3T50TBAyEZV41+zjgcIyL/2nzkMt0ECGYCjsZuGzCj9nE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788218803; c=relaxed/simple; bh=Px3WPJsJT98G0nSOx33kV9YpzPVJGQJclye8SW8PAjw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=JAaVI4qCj6y2JZkNERmnMQPLq76mQgz1bwzyLS71pZ9RrHl7D3UuaDzGp06vFzPI7ZgdW/YxbmW+mm3WKChxui+8/XIKi/RtVqHnzcdLmGgWcAb6MXLWEPiE287g7TJnCEnXIuzoG3aEx1NenpfJKa8/ekTa2OM6jvT45+TGFp8= 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=GdG47dVf; arc=none smtp.client-ip=209.85.128.178 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="GdG47dVf" Received: by mail-yw1-f178.google.com with SMTP id 00721157ae682-861145fc841so25958747b3.3 for ; Mon, 31 Aug 2026 16:26:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788218800; x=1788823600; 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=e1xYo3hdqET7WwrhB0ZD0H/ZAAlDFrf1Xtb+9lQv0GM=; b=GdG47dVfKdrEUlBv2cOCVitDdBLOX+42o5XYqLRb8/bvyPGSsJGzWAYj/w3Lg/+B9x tv171E04Fx02pp4DnFeKK1tUUdS19VJAXcDN/SNTa06+bWRbj+VepB1P0ifn1qjk0B3L fUVxltfGfumD5OAqVCd2tClCuDwPCqZeCyxMssNQnyikKBopmSYhmK1kpR4hzQyUScVt 3zSsW7Dz2C0kVy3yqSCbj8dWnNv6t/fG+ifXXvish9z/NcAWzqdc+3QpgczhYAnL+IW8 ldHa6/+NLt2ACKEajB0eQuECbc58ONgEmXraw6cr2RUbyse/F09piB9m2E//rqKFc8X6 +RMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788218800; x=1788823600; 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=e1xYo3hdqET7WwrhB0ZD0H/ZAAlDFrf1Xtb+9lQv0GM=; b=dv7/kLQMWJaKqSyYhEPhEhXsOo3shvj5TgVmA3tDRGW4e53DPNF06gZQ/6ZDYVhqEg 5DnHfyetpy98LY885xxNi8jPcYWHy994czLRnk1Ogh3FIpH5grwdc4w/EIIK/7HlTVrS sQtDMM7U+AgTVLK14mjYxpDuN3qZcW1788HWO5sn/HmvPtjQ+SXgvk4p27Rs+z/mwQCl xuxu1OIBCnKtniB2Zxgyi4MeJ6TrJccliOO5tnY8DldFC67j/sDvpcYekgc4nedIxH8R 2Gihxs5i5WQ8EpVF1ZLh1+O/Z8cLkL2NWCm5F3wYGlAfWnkSR0nlUf11A5qrtQ5WryZQ CbwA== X-Forwarded-Encrypted: i=1; AKwUvBxYKoFLiEnbK8RSGtWrCVYUuauTlM5cB0gf9CTxHJRSXUhh0YE2jW/5PNspco6jzA2AmuQcO2+Z6a5dXWE=@vger.kernel.org X-Gm-Message-State: AFuF++m8fkPZLCK7DpinJi8hpKfh4ygPl3IZLkiMz1nmtqi4DU2JFec1 rcYddiOzWKWMMG83/cR2fJzI+sK/ZkM+OnNvIUh+22y13otMbbil3npc X-Gm-Gg: AYBFou0JxEY8loLxWqwd95xO0rz76sVjH8dntN/9dQXWGFF/KbxUR4J8/AOtZndHoB6 lmTOeE6Zyuj7JhOs4gno4hZld0fM/ITJS/JjIya+8o+2NOP3LowD1XbLgMY0fl1ZICiQEtMDrA6 Rh4XVUcLEv3vqDJzJ7qJCNewMyq5zSPQxu/IlETFwo7cgRGFHX1OQymbisftv7svXEw78M7wW+V pv739Mp4He3RxrtJRtHY+Yjjs7ryU5Nj0s7FkQZSxcnI8riqItDlDwwnnAmvRP/l8oCBCZbW0tS 1KU7cU4VMXvOl39cJKZcV7blIWceMVyADhs6+BTk8cejw++i21okV9UJRaVEXr7lHMY7QTeHIbB kCfYLSqlnU+ZrGUdJAn0Ei2SaRroVR2rQsLlJkfeEXFWUbXezTGGp0jI6nae8Equ4IZja5cvXr4 POjVdXcyP7IP592yeWvWPwwwxZnBpo/dcrktPmZBSg0WpoINIbY21pj1smqNiul9kmZdxOT0U= X-Received: by 2002:a05:690c:12:b0:867:617c:9907 with SMTP id 00721157ae682-86874be1e3fmr20245247b3.18.1788218800211; Mon, 31 Aug 2026 16:26:40 -0700 (PDT) Received: from [10.112.196.110] ([187.9.129.181]) by smtp.gmail.com with ESMTPSA id 00721157ae682-8650aacd1c7sm34291667b3.35.2026.08.31.16.26.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2026 16:26:39 -0700 (PDT) From: Lucas Adryell Ramalho Date: Mon, 31 Aug 2026 20:26:30 -0300 Subject: [PATCH v4] 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: <20260831-ptbr-stable-api-nonsense-v4-1-0ef5e58504cc@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/33OywrCMBAF0F8pWRvJUxtX/oe4yGPSBmpbklKU0 n83LS6qYGE2d+CemQkliAESuhQTijCGFLo2B3EokK11WwEOLmfECDuRkircDybiNGjTANZ9wG3 XJsiDreCOCam1lwrleh/Bh+dK3+451yENXXytl0a6bD8oI//RkWKKCRfUS+nBMnetHjo0R9s90 IKObAvRHYhlyJOz80ITb7n5hfgW4jsQz5AsrTIAxivz9dE8z2+QFM9oUgEAAA== 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=1788218796; l=14266; i=lucasadramalho@gmail.com; h=from:subject:message-id; bh=Px3WPJsJT98G0nSOx33kV9YpzPVJGQJclye8SW8PAjw=; b=2d90CY4hVYuV4FuZFJUeXPsH7ia1iK5c0je82P6S4UrsLYnh9FU96ADSD1tXGuSjkxVuGdsfu tut9rKLkmovBGm09AztKfvo3tV7r1R0Xc1thEDVHr+iAhZzShUE0IkF 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 Acked-by: Daniel Pereira Signed-off-by: Lucas Adryell Ramalho --- Changes in v4: - Fix nested list formatting that caused an error during make htmldocs. - Remove trailing whitespace reported by checkpatch. - Link to v3: https://lore.kernel.org/r/20260823-ptbr-stable-api-nonsense-v= 3-1-58c9beebf9bd@gmail.com 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 | 208 +++++++++++++++++= ++++ 2 files changed, 209 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..c5d0e643e --- /dev/null +++ b/Documentation/translations/pt_BR/process/stable-api-nonsense.rst @@ -0,0 +1,208 @@ +.. 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