Presentación
Registrarse
Programa
Desarrollo
Participación
Normas para los autores
Comité de Honor
Comité Organizador
Comité Científico
Comité Técnico
Patrocinadores
Servidores espejo (mirrors)
Noticias
Recortes de prensa,enlaces
|
Desarrollo
Log de la conferencia. Se han suprimido las líneas correspondientes
a entradas y salidas de diferentes personas en el canal durante la
conferencia
[22:11] (fernand0) Hola,
[22:11] (fernand0) tenemos el gusto de presentarles hoy aqui a Luz Futten.
[22:11] (Lulu) adelante
[22:11] (Lulu) el que comienza
[22:11] (fernand0) De su formación destaca:
[22:11] (fernand0) - FPO A+ americano (equivalente español al curso FPO
[22:11] (fernand0) de servicio técnico reparador de aparatos con
microprocesadores).
[22:11] (fernand0) - FPO americano equivalente al FP1 de Electrónica.
[22:11] (fernand0) - Ingeniería técnica en sonido (especialización en
acústica).
[22:11] (fernand0) - Certificate in International Trade & Business, Continuing
Education
[22:11] (fernand0) en la Univ. americana de Georgetown (Washington D.C.).
[22:11] (fernand0) - FPO Programador de Proyectos Multimedia.
[22:11] (fernand0) y muchos otros que no ponemos para no alargar ...
[22:11] (fernand0) Además es miebro de las siguietnes sociedades:
[22:11] (fernand0) Institute of Electrical & Electronics Engineers (IEEE)
[22:11] (fernand0) Dentro de ella, de varias sub-asociaciones:
[22:11] (fernand0) Computer Society, Education Society, Information Theor
[22:12] (fernand0) Theory Society y Signal ProcessingSociety.
[22:12] (fernand0) - Miembro de la Internet Society (ISOC)
[22:12] (fernand0) - Miembro de la ACM (Association for Computer Machinery)
[22:12] (fernand0) Miembro de la American Sound Engineers Association.
[22:12] (fernand0) - Miembro fundador y ex-vicepresidente de la
[22:12] (fernand0) Asociación de Amigos de las Bandas Sonoras de Cine y TV.
[22:12] (fernand0) - Miembro de la Electronic Music Fundation.
[22:12] (fernand0) - Miembro nº 30 de la Asociación The International Music
Society.
[22:12] (fernand0) - Miembro de varias IESG's, Task Forces de la IEEE,
[22:12] (fernand0) Su conferencia se titula:
[22:12] (fernand0) Introduccion a la creacion de drivers en Linux
[22:12] (fernand0) Queremos agradecer a todos ustedes su presencia aquí y a
Luz, su apoyo
[22:12] (fernand0) incondicional a este congreso. Ella fué una de las primeras
personas que
[22:12] (fernand0) nos dió el si para dar una conferencia y ayudó con el
desarrollo de las
[22:12] (fernand0) páginas web, traducción al inglés, etc. a pesar de sus
multiples
[22:12] (fernand0) ocupaciones.
[22:12] (fernand0) Luz ...
[22:13] (Luz) encantada :) hola a todos, y espero que les guste el tema de la
conferencia :)
[22:14] (Luz) Introducción: Creación de Drivers en Linux - Introduction:
Creating Drivers in Linux
[22:14] (Luz) Autora - Author: Luz Fütten
[22:14] (Luz) Dudas - Doubts: email me at - enviadme un email a:
[22:14] (Luz) -------------------------
[22:14] (Luz) Sorry english speakers! I had no time to translate it! Please, let me know if you're interested on receiving it right on your email box, or contact again the Umeet web, cause I'll send it there tomorrow.
[22:14] (Luz) -------------------------
[22:14] (Luz) Al principio, iba a hablar sobre el Open Source, pero como el tema ya se ha expuesto
[22:14] (Luz) ampliamente en la conferencia de Antonio Nuñez Ruiz el pasado 17 de Noviembre, creo que es
[22:15] (Luz) mejor ir directo al grano y centrarnos más en el interior de Linux. Solamente comentar que la
[22:15] (Luz) Comisión Europea ha decidido el pasado 1 de Septiembre no hacer las patentes de software
[22:15] (Luz) hasta investigar mejor sobre el caso, y que se decide postponer la próxima reunión al año 2002.
[22:15] (Luz) Al menos ya tenemos durante dos años más una Europa sin patentes de software, que van en
[22:15] (Luz) contra del espiritu del Open Source.
[22:15] (Luz) At first, I wanted to talk about the Open Source, but as the subject was widely discussed in the
[22:15] (Luz) conference of Antonio Nuñez Ruiz, past 17th of November, but I guess is better to go directly to
[22:15] (Luz) the subject and have a trip to the inner Linux. Only to comment that after a hard discussion on
[22:15] (Luz) software patents, the European Comission decided that they have to investigate more about the
[22:16] (Luz) case, so next meeting is postponed for year 2002. At least, we have two years more of a Europe
[22:16] (Luz) free of software patents, which are against the Open Source Spirit.
[22:16] (Luz) ---------------------------
[22:16] (Luz) El motivo de esta conferencia/presentación es la de dar una visión global de cómo funciona
[22:16] (Luz) Linux. Y es que no hay mejor manera de preparar a futuros programadores de este excepcional
[22:16] (Luz) Sistema operativo, que facilitándoles la comprensión de la lógica de su funcionamiento.
[22:16] (Luz) En cuanto esto se comprenda, la programación de drivers en Linux, así como cualquier otra
[22:16] (Luz) aplicación será una simple cuestión de detalles en el uso práctico de los comandos en los
[22:16] (Luz) diferentes lenguajes de programación.
[22:16] (Luz) Espero que esto les sirva de ayuda para introducirles en este apasionante mundo de la
[22:17] (Luz) Programación en Linux, y podamos difundirlo todavía más, y crearlo a la medida exacta de
[22:17] (Luz) nuestras necesidades.
[22:17] (Luz) The reason for this presentation/conference is to provide a global vision of how Linux works.
[22:17] (Luz) Because there's no better way to propare the future programmers of this exceptional Operative
[22:17] (Luz) System than making them understand it's working logic. When this happened, then drivers
[22:17] (Luz) programming in Linux, as well as any other aplication will be a breeze, and a simple matter of
[22:17] (Luz) details in the practise use of the different commands of the different programming languages.
[22:17] (Luz) I hope this help you to introduce yourself in this exciting world of programming in Linux, so we
[22:17] (Luz) can spread it even more, and create it at the exact measure of our needs.
[22:18] (Luz) ------------------------
[22:18] (Luz) El secreto para escribir todo código de programación es el saber cómo funcionan las cosas a
[22:18] (Luz) nivel general, es decir, tener una visión global de cómo trabaja todo el sistema.
[22:18] (Luz) The secret to write any programming code is to know how things work, I mean to have a global
[22:18] (Luz) vision of how everything works.
[22:18] (Luz) ------------------------
[22:18] (Luz) Esta conferencia es útil a programadores noveles, usuarios avanzados que quieran conocer las
[22:18] (Luz) entrañas de Linux, o bien programadores de otras plataformas. Con más tiempo que esta
[22:18] (Luz) conferencia, se habria hecho un curso.
[22:19] (Luz) This conference is useful for novel programmers, power users interested on the inner Linux, or
[22:19] (Luz) even to other platforms programmers. With more time, I would have built a long course about it.
[22:19] (Luz) -----------------------
[22:19] (Luz) No se necesita saber ningún lenguaje de programación para comprender la conferencia, pero
[22:19] (Luz) recomiendo que se aprenda C, así como se haya 'trasteado' lo suficiente con cualquier
[22:19] (Luz) distribución Linux, o Unix comercial.
[22:19] (Luz) There's no need to know any programming language to attend this conference, though I
[22:20] (Luz) recommend a C knowledge, as well as to have been using thouroughly any Linux distribution,
[22:20] (Luz) or commercial Unix.
[22:20] (Luz) -------------------------
[22:20] (Luz) También recomiendo que se lean principalmente los siguientes documentos, aunque, por
[22:20] (Luz) supuesto, hay muchos más:
[22:20] (Luz) 1. -Libro: Editorial O'Reilly - Linux Device Drivers - Alessandro Rubini - ISBN 1-56592-
[22:20] (Luz) 292-1 (creo que este libro ya ha sido traducido al español, yo me lo compré cuando salió en
[22:20] (Luz) inglés)
[22:21] (Luz) 2. -Un magnífico libro, escrito en inglés "The Linux Kernel", de David A. Rusling, que se
[22:21] (Luz) puede encontrar en esta dirección: http://www.linuxdoc.org/LDP/tlk/tlk.html
[22:21] (Luz) 3. -Un antiguo How-To llamado "The Linux Hackers Guide" de Michael K. Johnson, que
[22:21] (Luz) aunque ya está algo desfasado, y la nueva versión de Kernel tiene algunas diferencias, sigue
[22:21] (Luz) siendo un texto básico.
[22:21] (Luz) Also, I did recommend you to have a look at these bibliography (of course, there's a lot more on
[22:21] (Luz) the subject):
[22:21] (Luz) 1. Linux Device Drivers from Alessandro Rubini. Ed. O'Reilly.
[22:22] (Luz) 2. The Linux Kernel, free on the net, from David A. Rusling, you can find it here:
[22:22] (Luz) http://www.linuxdoc.org/LDP/tlk/tlk.html
[22:22] (Luz) 3. An old How-To from Michael K. Johnson, the Linux Hackers guide, even tough a bit out of
[22:22] (Luz) date...
[22:22] (Luz) ---------------------
[22:22] (Luz) Bueno, y despues de soltaros el rollo de rigor, allá vamos...
[22:22] (Luz) Well, after all this babble, here we go...
[22:22] (Luz) ---------------------
[22:22] (Luz) Si sois linuxer@s y tratais con gente informática de otras plataformas, como los amiguer@s, lo
[22:22] (Luz) MACer@s, y principalmente Wintel@s, siempre escuchareis el eterno blues de Linux, que si es
[22:23] (Luz) un Sistema Operativo para Tecno-Gurus, que es complicado de Instalar, que no es intuitivo y
[22:23] (Luz) que no lo entiende ni Dios, y por si fuera poco, que es incompatible con Hardware y Software
[22:23] (Luz) Específico.
[22:23] (Luz) Desgraciadamente, lo del hardware es real, pero no por falta de programadores que se hagan sus
[22:23] (Luz) drivers a medida, sino porque culpa de los fabricantes que todavía son reacios y se resisten a dar
[22:23] (Luz) su código para poder gestionar las virtudes del susodicho cacharro. Y sin esto, poco se puede
[22:23] (Luz) hacer...
[22:23] (Luz) If you're a linux freak, and you got computer friends from other platforms, as the amigans,
[22:23] (Luz) "Wintel 'ers" and "Mac'ers", you'll hear the same old Linux blues: hey, thats an OS for techno-
[22:24] (Luz) gurus, it's too complicated to install, there's nothing intuitive with an easy learning curve on it,
[22:24] (Luz) Neither God can understand that Operative System, and that Linux is non-compatible with pro
[22:24] (Luz) specific hardware and software.
[22:24] (Luz) Unfortunately, its true when talking about hardware and soft compatibility, but not because
[22:24] (Luz) there's a lack in good programmers, but because of hardware builders and designers who don't
[22:24] (Luz) trust Linux and Open Source, and don't want their code to be known. In this environment,
[22:24] (Luz) nobody can take advantage of the hardware's functions!
[22:24] (Luz) -------------
[22:24] (Luz) En el diseño de Unix, una de sus brillantes ideas, es el que para progamar, se distingue entre "lo que hay que hacer"o el mecanismo y "cómo puede ser usado" o la ley.
[22:25] (Luz) ¿Qué es un driver?
[22:25] (Luz) Bueno, habrá que comenzar por el principio, no? Pues bien, un driver es un trozo de código que
[22:25] (Luz) controla el usoque se le va a dar a una pieza de hardware.
[22:25] (Luz) Depende de cómo esté escrito el driver, y para qué tipo de programa, el hardware podrá ser
[22:25] (Luz) usado para distintas funciones.
[22:25] (Luz) Esto dá una mayor flexibilidad, ya que no hace falta reescribirlo todo para personalizar las
[22:25] (Luz) actividades a realizar por los diferentes programas.
[22:25] (Luz) Para que un driver sea eficaz, y saque todo el partido posible al dispositivo, hay varias cosas a
[22:25] (Luz) tener en cuenta:
[22:26] (Luz) 1. La pericia del programador para sacarle las máximas posibles funciones al hardware.
[22:26] (Luz) 2. La capacidad de saber cómo funcionan, y cómo están programados (y que código utilizan)
[22:26] (Luz) los diferentes chips y DSPs. Por ejemplo, si queremos hacer un driver a una tripleDAT de
[22:26] (Luz) Creamware, y no nos suministran la información necesaria sobre su programación, ya
[22:26] (Luz) podemos tener la mejor intención del mundo, que no podemos hacer nada para construir un
[22:26] (Luz) driver decente que le saque provecho.
[22:26] (Luz) 3. Escribir un código limpio, es decir, simple, claro y conciso. Cuanto más usemos de la parte
[22:26] (Luz) del mecanismo que mencionábamos antes, y menos las "leyes", mucho mejor.
[22:27] (Luz) 4. Diseñándolo para operaciones síncronas y asíncronas.
[22:27] (Luz) 5. Que pueda ser abierto y usado varias veces, y a ser posible simultáneamente.
[22:27] (Luz) Funcionamiento de Linux: Sistema Modular
[22:27] (Luz) ? Kernel o Núcleo: Código ejecutable encargado de controlar procesos.
[22:27] (Luz) ? Módulos: Los diferentes procesos que el kernel ejecuta.
[22:27] (Luz) En Unix, todos los procesos quieren saber con cuales recursos han de contar para hacer su
[22:27] (Luz) trabajo, pues bien, el kernel es el que se dedica a gestionarlo todo, usando los módulos que se
[22:28] (Luz) necesiten. Que adónde quiero ir a parar con esto? Pues bien, simplemente que el kernel llama a
[22:28] (Luz) un módulo, si éste no existe, o no funciona correctamente, pues no se pone en marcha, da
[22:28] (Luz) errores, y la gran mayoría de las veces NO PASA NADA (no como MSWindowsXX, que te
[22:28] (Luz) sale una pantalla azul y se te anula todo el sistema).
[22:28] (Luz) Lo bueno que tiene esto es que se puede arreglar un driver sin necesidad de usar otro ordenador,
[22:28] (Luz) aunque se tenga que volver a reiniciar el sistema.
[22:28] (Luz) El kernel está escrito principalmente en gcc y g++, compiladores de C y C++, ya instalados en
[22:28] (Luz) el sistema, y que serán necesarios para realizar futuras actualizaciones del sistema (dónde se ha
[22:28] (Luz) visto semejante libertad? Así por la cara, me fabrico mi propio kernel a medida, y no tengo que
[22:29] (Luz) comprarme lo que las plataformas Wintel/Apple me dictaminen, vamos que puedo personalizar
[22:29] (Luz) mi prio sistema operativo!!!! Si es que lo bueno de Linux es eso: el poder fabricarte tu mismo
[22:29] (Luz) tus propias cosas, es tu taller y tu mesa de trabajo, y ademas, tu lugar de experimentaciones!).
[22:29] (Luz) Puede incluso emular un coprocesador matemático si éste no existe (en sistemas antiguos, como
[22:29] (Luz) los 386 ó 486SX..), y gestiona todos los procesos ó módulos, de forma independiente,
[22:29] (Luz) componiendo un sistema operativo verdaderamente "multitasking", ya que puede controlar
[22:29] (Luz) varios procesos a la vez.
[22:29] (Luz) En este sistema modular tan eficaz, aunque muchos procesos no son tan fácilmente
[22:29] (Luz) reconocibles, podríamos decir que el kernel se divide en los sigueintes "sub-módulos" por
[22:30] (Luz) decirlo de alguna manera:
[22:30] (Luz) 1. Control de Procesos:
[22:30] (Luz) - La "agenda" de procesos. Digamos que lleva un control de prioridades sobre qué proceso ha de entrar antes, y qué es lo que hay que hacer a continuación.
[22:30] (Luz) - Creación o destrucción de procesos. Pues exactamente eso. Cuando un proceso termina, se lo destruye, y al revés.
[22:30] (Luz) - Comunicación con el mundo externo: Entradas y Salidas (In/Out). Esto creo que se explica por sí mismo, no?
[22:30] (Luz) - Intercomunicación entre los diferentes procesos (buses, señales, etc.). Y es que además de conectarse con el exterior también ha de comunicarse con sus vecinos para trabajar mejor, no?
[22:30] (Luz) 2. Control de Memoria: El control de memoria gestiona todos los procesos, y los va ordenando
[22:31] (Luz) y situando en las diferentes direcciones de memoria que estén disponibles. Gestiona la
[22:31] (Luz) memoria virtual (archivos swap, etc.), los espacios de direcciones largas, el mapeado de
[22:31] (Luz) memoria, la memoria virtual compartida, la memoria física y también a la protección.
[22:31] (Luz) 3. Sistemas de Archivos: Uyy el sistema de archivos..... A ver cómo explico yo esto... Vamos
[22:31] (Luz) a ver, tienes todos los sistemas de archivas que quieras, y además te puedes inventar los
[22:31] (Luz) tuyos propios.... Bueno, ya, pero antes de nada, y aunque parezca algo muy elemental...
[22:31] (Luz) ¿Qué es un sistema de archivos? Pues literalmente, como en la vida real, es un sistema de
[22:31] (Luz) organización de datos en un medio físico. Vaya, más o menos como mi pared entera de
[22:31] (Luz) biblioteca, pero más ordenada (jeje). Bromas aparte, el sistema de archivos es una estructura
[22:32] (Luz) que va por encima del hardware.. ¿Qué cómo se come esto? Pues simple, que el hardware
[22:32] (Luz) va primero y es independiente del sistema de archivos, y ya que en Linux/Unix se pueden
[22:32] (Luz) usar tantos sistemas de archivos, pues tenemos plena libertad en usar uno o varios. Otra
[22:32] (Luz) particularidad a mencionar, es que en Linux casi todo puede ser tratado como un archivo, es
[22:32] (Luz) decir, borrado, modificado, escondido, etc. Si ya saben algo de administración en Linux,
[22:32] (Luz) pues sabrán que un usuario en realidad no es más que un directorio con las capacidades,
[22:32] (Luz) libertades y limitaciones que le hayamos asignado. Y esto que es? Pues ni más ni menos que
[22:32] (Luz) un archivo (oye, si mi móvil es también un archivo, lo puedo borrar de la faz de la tierra??
[22:32] (Luz) jaja! Y a mi jefe también puedo borrarlo? Lástima que no tengo jefes! Juajuajua! ).Bueno,
[22:32] (Luz) sigamos...
[22:33] (Luz) 4. Control de Dispositivos: Bueno, de esto es de lo que de verdad trata toda la conferencia,
[22:33] (Luz) pero el caso es que si no os explico cómo funciona el kernel, pues ya me direis como vais a
[22:33] (Luz) enteraros de algo.... Más adelante profundizaré en este apartado.
[22:33] (Luz) 5. Sistemas de Comunicación o networking: Para que quede bien clara la diferencia con
[22:33] (Luz) MSWindowsXX, Linux trata a los sistemas de comunicación como algo diferente a un
[22:33] (Luz) dispositivo normal y corriente. Las operaciones de red no son específicas de ningún proceso
[22:33] (Luz) en concreto, de hecho los paquetes que se reciben son eventos asíncronos, que van antes de
[22:34] (Luz) cualquier proceso, y que han de acumularse, identificarse y "despacharse" antes de hacer
[22:34] (Luz) algo con ellos. El sistema hará que estos paquetes crucen y vayan a los programas e
[22:34] (Luz) interfaces de red, y se les asigne algún proceso en concreto. Estos procesos que se les asigne
[22:34] (Luz) a los paquetes dependerán de los programas, y a qué van a ser sensibles o no, y que cuando
[22:34] (Luz) sean detectados pues que "despierten" al sistema o hagan algo en concreto. Y para que vean,
[22:34] (Luz) es el único sistema operativo que trata a las comunicaciones de una forma tan especial, y tan
[22:34] (Luz) profundamente en su kernel. ¿Dónde han visto que se trate a tan bajo nivel el sistema de
[22:34] (Luz) paquetes de datos? ¿Ahora comprenden porqué es tan fácil interceptar cualquier versión del
[22:34] (Luz) Windows de Microsoft? Es fácil! Si en MSWindowsXX las comunicaciones son tratadas
[22:34] (Luz) como un proceso de "alto nivel", pues anda que se le puede decir cualquier cosa... desde
[22:35] (Luz) llenar de virus hasta enviar al módem comandos AT para modificar su funcionamiento!
[22:35] (Luz) (bueno, mejor me callo, no vaya ser que os de ideas al respecto y me hagan responsable!)
[22:35] (Luz) Por cierto, os acordáis cuando en el IRC estaba de "moda" hacer kills que capturaban el
[22:35] (Luz) número de puerto y hacían barbaridades, desde producir un error de excepción y que saliera
[22:35] (Luz) la "tan amada" pantallita azul?????? Pues exacto. Esto en Linux es imposible. A no ser, por
[22:35] (Luz) supuesto, que el administrador no tenga ni la menor idea y deje a todo el mundo entrar
[22:35] (Luz) como root!!! Pero bueno, esa es otra historia....
[22:35] (Luz) Bueno, ya es momento de retomar el punto 4 sobre el control de dispositivos, del que no se dijo
[22:36] (Luz) nada... Que por cierto, se encuentra en el directorio /dev/ (devices = dispositivos en inglés).
[22:36] (Luz) Bien, pues si estamos ante un sistema modular, que nos hace falta aquí? Pues que iba a ser! Un
[22:36] (Luz) módulo! Pues no, muchos más! Y además me atrevería a decir que no sólo es un sistema
[22:36] (Luz) modular, sino que incluso diría que también está anidado! Es decir, que dentro de un módulo
[22:36] (Luz) pueden existir otros. Y en este caso del control de dispositivos, se clasifican principalmente en
[22:36] (Luz) tres tipos de dispositivos que son módulos diferentes (esto no quita que dentro de x tiempo, a
[22:36] (Luz) alguien se le ocurra fabricar otro tipo de módulo para algún nuevo tipo de hardware que no
[22:36] (Luz) entren en ninguno de los tres módulos base!):
[22:37] (Luz) 1. Módulo para dispositivos CHAR.
[22:37] (Luz) 2. Módulo para dispositivos BLOCK.
[22:37] (Luz) 3. Módulo para dispositivos NETWORK.
[22:37] (Luz) Ya entraremos más en detalle sobre cómo funciona cada uno de estos dispostivos.
[22:37] (Luz) En cualquier caso, hay dispositivos mixtos, como por ejemplo las controladoras SCSI, que no
[22:37] (Luz) son puramente CHAR, ni BLOCK, ni NETWORK. Y es que son unas controladoras que en
[22:37] (Luz) realidad usan un protocolo de comunicación, interno y externo, y además el resultado de su
[22:37] (Luz) comunicación da pie a datos CHAR o BLOCK, dependiendo de los periféricos que estén
[22:38] (Luz) conectados a ellas (discos duros, CDs, escáners, etc).
[22:38] (Luz) Esto que acabo de decir seguro que os suena a chino, ya que todavía no he explicado en qué
[22:38] (Luz) consisten estos tres tipos de dispositivos.... paciencia... ya entraré en detalles en el momento
[22:38] (Luz) oportuno...
[22:38] (Luz) Pero.... ¿Cuándo es el momento oportuno? Pues ahora mismo!
[22:38] (Luz) 1. Módulo para dispositivos CHAR. /dev/cua0
[22:38] (Luz) Dicho de forma simple y rápida, son dispositivos que pueden ser leídos y escritos sin usar
[22:38] (Luz) ningún búffer. Un ejemplo de esto, son los puertos serie.
[22:39] (Luz) 2. Módulo para dispositivos BLOCK. /dev/hda
[22:39] (dr) alguien de miami
[22:39] (Luz) En inglés, BLOCK significa "bloque", pues así es como es realmente, ya que sólo se puede
[22:39] (dr) de los estados unidos
[22:39] (Luz) acceder a escribir o a leer estos dispositivos por bloques o múltiplos de bloques, o sectores.
[22:39] (dr) alguien de los estados uynidos
[22:39] (Luz) Y como ya he dicho la "palabra mágica de sectores" seguro que ya habrán adivinado a qué tipo
[22:39] (Luz) de hardware me refiero, no? Pues quienes iban a ser! Los discos duros! Además estos
[22:39] (Kefar) '/msg dr estamos en una conferencia
[22:39] (Luz) dispositivos son los únicos que pueden tener montado un sistema de archivos.
[22:39] (Luz) Y ahora volvamos un momento a las controladoras SCSI, después de lo dicho, y analizemos:
[22:39] (Luz) Usan un protocolo de comunicación para hablar con su cadena de dispositivos, que pueden ser
[22:39] (Luz) de cualquier tipo. Volviendo a la idea general, cuando vayamos a programar un driver que
[22:40] (Luz) realmente funcione correctamente de la forma más simple, hay que dividir sus funciones, según
[22:40] (Luz) los módulos más apropiados para hacerlo. Es decir, hacer submódulos o "células" libres e
[22:40] (Luz) independientes, no liar las funciones ni las llamadas, y así obtendremos un código limpio y
[22:40] (Luz) cualquier error será mucho más fácil de detectar. ¿A que no es lo mismo depurar 20,000 líneas
[22:40] (Luz) de código que sólo 50??? Pues bien, si hacemos varios módulos de 100 líneas, no nos
[22:40] (Luz) marearemos, y enseguida tendremos claro lo que pasa para corregirlo inmediatamente.
[22:40] (Luz) Y ahora seguimos enumerando los tipos de módulos para dispositivos:
[22:40] (Luz) 3. Módulo para dispositivos de red.
[22:40] (Luz) Normalmente, los dispositivos de red hacen sus transacciones de datos a través de un interface,
[22:41] (Luz) que bien puede ser hardware o software. El kernel o núcleo de Linux tiene un subsistema para
[22:41] (Luz) gestionar todos los envíos y recepciones de paquetes de datos, que más o menos hemos ido
[22:41] (Luz) adelantando antes de llegar a este apartado.
[22:41] (Luz) Este módulo tiene que estructurarse de tal modo que pueda procesar lo siguiente:
[22:41] (Luz) - Nombre: Es decir, la identificación de cada paquete recibido y/o enviado.
[22:41] (Luz) - La información que le llega del Bus.
[22:41] (Luz) - Los flags del interface.
[22:41] (Luz) - Información sobre el protocolo que está usando.
[22:41] (Luz) - Lista de espera de los paquetes, su orden, etc.
[22:41] (Luz) - Funciones de soporte.
[22:42] (Luz) Antes de seguir, advierto que no voy a entrar en detalles sobre los comandos a utilizar, porque
[22:42] (Luz) ni tendríamos tiempo, y seguro que con lo tarde que es, todos se me duermen...
[22:42] (Luz) Y ahora, despues de la teoría, sigamos con los pasos a seguir para crear un driver en Linux.
[22:42] (Luz) 1. Antes de nada, ponerle un nombre! Toda criatura cuando nace ha de tener un nombre!
[22:42] (Luz) Lo que pasa es que como esta criatura es un driver y no una persona, pues eso de llamarla
[22:42] (Luz) Rigoberta no quedaría bien, y por eso el nombre que se le suele poner al dispositivo es corto, de
[22:43] (Luz) 2 o 3 caracteres. Por ejemplo, si tu dispositivo se llama cao, para que tus funciones queden
[22:43] (Luz) bonitas y no te confundas, puedes ponerles nombres como cao_write( ), etc.
[22:43] (Luz) 2. Asignarle un lugar en la memoria. Hombre, es que cuando algo nace y aparece, existe, y por
[22:43] (Luz) tanto ocupa un sitio, pero para que no haya conflictos ni problemas, hay que ponerlo en un
[22:43] (Luz) lugar donde no haya nadie (no vaya a ser que se maten a patadas!). Eso si, OJO! Hay que
[22:43] (Luz) asignarle un sitio en la memoria del kernel, y que esto no es lo mismo que que el
[22:43] (Luz) asignamiento de memoria a nivel de programas de usuario.. Por supuesto, habrá veces que
[22:43] (Luz) tendremos que liberar antes la memoria para que nuestra criatura tenga un sitio en el
[22:43] (Luz) universo lógico.. Poniéndonos serios, tenemos que definir que vamos a hacer con el driver, si abrirlo cuando se cargue el módulo asignado del interfaz, o bien cuando el kernel se inicie, cada manera tiene sus ventajas y sus desventajas..
[22:44] (Luz) Aquí hago un inciso, antes de que se me olvide: Cuanto más pequeña sea la cantidad de
[22:44] (Luz) memoria que asignemos, mejor, y si además lo hacemos de forma no estática, pues fantástico,
[22:44] (Luz) porque haremos un uso más eficaz. En la inicialización de la función, "cao_init ( )" y lo
[22:44] (Luz) movemos de un final de uno al principio del otro, ahorraremos un montón.
[22:44] (Luz) Los drivers de dispositivos en el kernel de Linux tienen muchas funciones y atributos, pero lo
[22:44] (Luz) más importante a tener en cuenta son:
[22:44] (Luz) - El código del Kernel (léase cómo versión del código kernel).
[22:44] (Luz) - Interface/-es que esté usando el kernel en ese momento.
[22:45] (Luz) - Mecanismo del kernel y servicios (diferentes versiones del kernel dan diferentes servicios y
[22:45] (Luz) diferentes mecanismos).
[22:45] (Luz) - Que sea "cargable", es decir que se pueda cargar en memoria.
[22:45] (Luz) - Que sea configurable.
[22:45] (Luz) - Que sea dinámico.
[22:45] (Luz) ¿Nos vamos ya aclarando un poco?
[22:45] (Luz) Bueno, pues ahora vamos a ver si nos ponemos en el lugar del kernel y vemos la lógica de su
[22:45] (Luz) funcionamiento:
[22:45] (Luz) ¿Qué? ¿Pensabais encontraros algo en particular? Pues no, aquí no se ve nada, el kernel no tiene
[22:46] (Luz) ojos.. Bueno, perdonadme la broma, pero la verdad es que el kernel es un tanto aburrido, y lo
[22:46] (Luz) único que ve de un proceso es que es una entrada de las miles que pueden haber en la tabla de
[22:46] (Luz) procesos. ¿Conclusión? Pues que además de que el kernel no es artista ni ve los colores del arco
[22:46] (Luz) iris, es que lo que verdaderamente le importa es la tabla de procesos.
[22:46] (Luz) La tabla de procesos es 3 cosas a la vez (como vemos, será aburrido pero tiene varias
[22:46] (Luz) personalidades, todo un orgullo de la psiquiatría/psicología... ya me está empezando a caer bien
[22:46] (Luz) este kernel aburriedo... no te fíes nunca de las aparencias, jeje).
[22:46] (Luz) Estas tres cosas son un array, una lista con dos enlaces así como un árbol.
[22:46] (Luz) La implementación física es un array estático de punteros, cuyo tamaño está ya definido en el
[22:46] (Luz) "/include/linux/tasks.h" , y cada estructura está en una porción de la página de memoria
[22:47] (Luz) reservada.
[22:47] (Luz) Lo bueno que tiene el que pueda aceptar tres niveles de tablas, es que no está limitado como la plataforma x86, que sólo funciona a dos niveles, sino que tambien acepta procesadores de tres niveles, como el Alpha, y esto hace que no haga falta guarrear el código con "#ifdef"s.
[22:47] (Luz) El nivel superior de la tabla es el PGD, un array con un monton de punteros que redirecciona al segundo nivel. Cada proceso tiene su propio directorio paginado.
[22:47] (Luz) El nivel segundo es el PMD, que lleva al tercer nivel.
[22:47] (Luz) El nivel tercero, o inferior, es la tabla-página "de verdad", donde el array del proceso es la famosa entrada en la tabla que antes decíamos.
[22:47] (Luz) Aunque esto parece complicado y enrevesado, en relaidad no lo es, y de hecho, ni siquiera el kernel tiene que moletarse en mirar estas tablas en la ejecucion normal de un programa, porque todo esto se hace a nivel de hardware.
[22:47] (Luz) Un proceso puede estar funcionando en modo usuario o en modo kernel. Ni que decir que el
[22:48] (Luz) driver procuraremos que esté en modo kernel, si es que lo vamos a usar constantemente, o bien
[22:48] (Luz) a base de hacer llamadas a traves del software.. En el modo usuario, se usa un segmento de la
[22:48] (Luz) pila, y en el modo kernel se usa una página entera de una pila de tamaño fijo, y nuca puede ser
[22:48] (Luz) intercambiable porque ha de estar dispuesto siempre, ante cualquier llamada de sistema que se
[22:48] (Luz) produzca.
[22:48] (Luz) Las llamadas del sistema dentro del kernel existen como funciones del lenguaje C, y su nombre
[22:48] (Luz) "oficial" es va siempre con el prefijo "sys_".
[22:48] (Luz) Y ahora vamos al secreto de todo: las interrupciones.Para comprender esto hace falta saber que el hardware es tremendamente lento, o bien lo que es lento es su forma de comunicación (que si puertos serie, paralelos, etc.). La CPU esta histerica esperando a que el hardware le responda, y tendria que estar todo el tiempo anulada, esperando y ocupada para otras actividades de entrada y salida en la que se la necesita. Pues para que el funcionamiento sea mas eficaz, se
[22:49] (Luz) Bueno, creo que el tiempo de la conferencia es corto para explicar todo, con lo cual creo que podríamos darla por terminada. En cuanto me quede algo de tiempo prometo completar información en UMEET.Espero que les haya sido de utilidad. Gracias. Luz Fütten.
[22:49] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[22:49] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[22:49] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[22:49] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[22:49] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[22:49] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[22:49] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[22:49] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[22:49] (Kefar) plas plas plas plas plas plas plas plas plas plas
[22:49] (fernand0) plas plas plas plas plas plas
[22:49] (Kefar) plas plas plas plas plas plas plas plas plas plas
[22:49] (ork) muy bien!!!!
[22:49] (Kefar) plas plas plas plas plas plas plas plas plas plas
[22:49] (Borja) plas plas plas plas plas
[22:49] ) 4 BRAVOOOOOOOOOOOOOOOOOOOOOOOOOO
[22:49] ) 4 BRAVOOOOOOOOOOOOOOOOOOOOOOOOOO
[22:49] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[22:49] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[22:49] (Kefar) rebien!!!
[22:49] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[22:49] (fernand0) plas plas plas plas plas plas
[22:49] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[22:49] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[22:49] (fernand0) plas plas plas plas plas plas
[22:49] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[22:49] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[22:49] (dr) bravisimo
[22:49] (ork) si!! que bien
[22:50] (dr) BRAVISIMOOOOOOOOO
[22:50] (JJ) Otra,Otra,Otra
[22:50] (fernand0) a ver
[22:50] (fernand0) si les parece
[22:50] (fernand0) empezamos el tiempo de las preguntas
[22:50] (Samael) buena buena
[22:50] (Samael) como uno aprende aqui
[22:51] (Samael) es interezante incluso para los novatos (yo)
[22:51] (dr) al igual que yo
[22:51] (debUgo-) Luz: en que momento usa el kernel C++ (g++)? hasta donde sé, el código que generaba g++ no era muy bueno que digamos
[22:51] (Kefar) he entendido mas en que estoy metido..... :))))
[22:52] (debUgo-) luz: y pues, usar g++ para compilar C no creo que sea muy lógico
[22:54] (ork) una pregunta de novato, el driver cargado en modo user es un modulo? y en modo kernel es cuando se compila dentro?
[22:54] ) al hilo de lo que ha salido, Luz, ¿por que aparecen las pantallitas azules de winpiiiiiiiiii95 ?
[22:55] (ork) :-), no te aproveches de la situacion mjesus ... :-) jejejejejeje
[22:55] (ork) helo, los modulos cargados corren en el modo user?
[22:56] (Luz) debugo= tienes razon, la verdad es que he escrito la conferencia a toda pastilla
[22:56] (debUgo-) alo?
[22:56] (viper) plas plas plas plas plas plas plas plas plas plas plas
[22:56] (fernand0) lag ?
[22:56] (debUgo-) ah, ahí respondió =)
[22:57] (ork) parece que ahy lag?
[22:57] (Luz) ork= aunque sea en modo user, sigue siendo un modulo, pero externo, de alto nivel
[22:57] (ork) ahy=hay
[22:58] (ork) cuando es que se hace un driver para/en modo user?
[22:58] (Luz) mjesus= pues las pantallas azules pueden salir por miles de cosas... y como cada proceso y programa no tienen forma modular, todo el sistema se anula, en cambio, al menos en NT tienes una cierta libertad, ya que puedes controlar el sistema si un programa se queda colgado..
[23:00] ) aja....
[23:00] (Luz) bueno, ork, a ver si nos aclaramos... un cosa es que se cargue un modulo en el kernel cuando se inicia el sistema
[23:00] ) remedio, linux no ?
[23:00] (debUgo-) MJesus: nop, usar kernel NT =)
[23:00] (Luz) jeje, mjesus, algo asi... el BEOS tambien funciona bastante bien...
[23:00] (viper) cualquier tipo de UNIX
[23:01] (Luz) ork=
[23:01] (viper) y QNX???
[23:02] (Borja) Plan 9 ;-)
[23:02] (Luz) ork= mira, a ver como te explico, un driver se puede componer por varios modulos, segun las funciones que tengan, es decir, si lo haces limpio y separas cada funcion!
[23:03] (Luz) mira, una cosa es cargar en el init un modulo y otra atiborrar la memoria... pero si es hardware, deja que sea mejor el kernel..
[23:03] (Luz) el plan 9 lleva años dormido, no?
[23:04] (viper) que es el plan 9???
[23:04] (debUgo-) Luz: no, hace poco sacaron los fuentes a luz pública
[23:04] (ork) ok, evidentemente tengo que leer sobre eso, gracias. netonces me podrias poner algun ejemplo (no tiene que ser real) de un driver en el espacio user ?
[23:05] (Borja) De dormido nada :-)
[23:05] (Borja) http://plan9.bell-labs.com
[23:05] (botijo) alguien dijo que http://plan9.bell-labs.com era un sistema operativo distribuído, un prototipo de investigación
[23:05] (Luz) a si? pues ni idea de que sacaron las fuentes hace poco... yo ahora la verdad es que estoy enfrascada en el envio de datos a traves de satelite...
[23:05] (Luz) y al broadcasting...
[23:07] ) Luz, hay ventajas de una distribucion sobre otra ?
[23:08] (ork) ok, evidentemente tengo que leer sobre eso, gracias. netonces me podrias poner algun ejemplo (no tiene que ser real) de un driver en el espacio user ?
[23:08] (ork) porque el espacio user es el de los procesos no?
[23:09] (ork) creo que mejor me cayo y me voy aleer un poco :-)
[23:09] (Luz) ork= mira normalmente, el driver va en el buffer del kernel, int read (struct *inode , struct file *file , char *buffer , int count ) ;
[23:09] (viper) Existen drivers para soporte internet por aire???
[23:09] (debUgo-) hmmm... ese read() es del vfs, o me parece?
[23:10] (Luz) mjesus, pues para iniciarse hay varias, que ademas son muy faciles de instalar y ayudan a empezar.... el SUSE, el REDHAT y elCOrelLinux
[23:10] (Luz) no, el espacio user no es el de los procesos...
[23:12] (ork) ok,gracias
[23:12] (viper) Luz: Existen drivers para manejar internet por aire???
[23:13] (Luz) es decir, ork= mira, los buffers funcionan a nivel de usuario, y para que el kernel se entienda con el modo user, lo suyo es poner la informacion en el buffer
[23:13] (Luz) viper, que yo sepa no todavia... aunque creo que la empresa danesa kiss estaba en ello..
[23:14] (viper) Ok. Gracias
[23:14] (ork) ok,gracias
[23:14] (Luz) ork =al menos en los dispositivos char..
[23:14] (Luz) de nada :)
[23:15] (ork) ahora me voy, otra vez gracias por hacerme ver cuan atras estoy y cuanto me falta por ver (no digamos aprender) sobr este mundo
[23:15] (Luz) ork, por si te aclaras mejor, la diferencia entre un programa y un modulo es la siguiente:
[23:15] (ork) la conferencia estouvo genial, gracias
[23:16] (ork) a ver
[23:16] (Luz) una aplicacion cumple una sola cosa a la vez, desde el principio hasta el final
[23:17] (Luz) lo que tu dices del "modo usuario"
[23:17] (ork) aja
[23:18] (Luz) en cambio el modula se registra a si mismo para estar pendiente de futuros requests..
[23:18] (Luz) requests: como digo yo esto? requerimientos?
[23:18] (iCorrecam) peticiones
[23:18] (ork) se registra? donde? request esta bien dicho
[23:18] (Luz) y su funcion principal termina enseguida
[23:19] (Luz) ah, ok gracias icorrecam
[23:20] (ork) disculpa Luz, te estoy haciendo pasar tremendo apuro, esto me ha decidido aleerme algo que habia postergado desde hacia bastante tiempo,
[23:20] (ork) la parte del modulos en al documentacion del kernel
[23:20] (ork) gracias otra vez
[23:21] (Luz) de apuro nada ork, perdon que no pueda ser mas clara, todo esto lo he aprendido en ingles y me cuesta decirlo en español...
[23:21] (Luz) tengo un follon linguistico mental y a veces me lio...
[23:22] (ork) no hay lio, es normal que eso pase
[23:22] (Luz) pero graba este log, y veras que no es tan complicado, Linux es un sistema modular, y puede ser incluso anidado, es decir, submodulos dentro de modulos
[23:23] (ork) hace dos anhos que estoy "jugando" con linux y siempre deje el conocimiento de como funciona el kernel para despues, para cuando estuviera mejor preparado,
[23:24] (ork) cro que ya va siendo hora, verdad? por que si no...
[23:24] (Luz) bueno, pues igual es ahora el momento de que te pongas a comprender mejor como funciona...
[23:24] (Luz) cuando tu veas...
[23:25] (Luz) ahora veras que es fascinante.. yo hace año y medio que no estoy tanto con linux, metida en otras historias por trabajo... y sufro un monton...
[23:25] (Luz) es horroroso tener que trabajar con gente que todavia usa win9x
[23:25] (ork) :-)
[23:26] (ork) se que es fascinante pero no tengo buen background :-( y por eso me cuesta bastante ver las cosas del kernel
[23:26] ) a que si ?
[23:26] (Borja) ork, "Sistemas Operativos" de A. S. Tanenbaum
[23:27] (Luz) jajajjajajajaja, tanenbaum? el arbol de navidad??????!!!
[23:27] (ork) ya, ya, ese lo he visto recomendado en una pila de lados
[23:27] (debUgo-) Segunda edición, que la primera es un lio
[23:27] (ork) pero resulta que en cuba no es tan sensillo encontarlo :-)
[23:27] (Luz) bromas aparte, es que tanenbaum es arbol de navidad en aleman...
[23:27] (Borja) tercera, mejor.
[23:27] (ork) sencillo
[23:27] (Borja) Es el mejor libro que hay sobre diseño de sistemas operativos :-)
[23:28] (debUgo-) mira vos, no sabía de la tercera
[23:28] (ork) ahora que me acuerdo... aun cuando linux no cumple con sus advices?
[23:28] (Luz) pero para mi gusto, el mejor sistema operativo, a pesar de lo antiguo y semi-amorfo que pueda parecer, es el workbench de amiga....
[23:28] (debUgo-) y yo que tengo la primera XD
[23:29] (Luz) yo tambien tengo la primera...
[23:29] (Luz) en fin...
[23:29] (Borja) Segunda, perdón. No hay tercera. Me he liado con el de redes (otra obra maestra)
[23:29] (Luz) lo que si es importante es que se hagan mas drivers para linux...
[23:30] (fernand0) Esta charla puede seguir tanto como los asistentes deseen
[23:30] (debUgo-) Borja: ya decía yo
[23:30] (Luz) yo misma tambien, para el trabajo y demas, no tengo mas remedio que tener wintel en segun que cosas para pro-video y pro-sonido..
[23:30] (fernand0) pero creo que es un buen momento para agradecer a Luz su magnifica conferencia
[23:31] (fernand0) y a todos ustedes por su asistencia
[23:31] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[23:31] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[23:31] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[23:31] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[23:31] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[23:31] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[23:31] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[23:31] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[23:31] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[23:31] (fernand0) REcordarles que pondremos el log de la conferencia en nuestra web lo antes posible
[23:31] (ork) claro, fernando, claro
[23:31] (Luz) gracias fernando, como querais, si quereis inflarme a mas preguntas sobre el kernel o cualquier otra cosa, encantada... me he tomado 2 redbulls
[23:31] (fernand0) y que el UMEET continua el lunes
[23:31] (Luz) jejejej
[23:31] (Luz) gracias mjesus :)))))))))
[23:32] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[23:32] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[23:32] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[23:32] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[23:32] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[23:32] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[23:32] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[23:32] ) 4plas 5plas 6plas 7plas 8plas 9plas 10plas 11plas 12plas 13plas
[23:32] ) 4clap 5clap 6clap 7clap 8clap 9clap 10clap 11clap 12clap 13clap
[23:32] (ork) jejeje
[23:32] (iCorrecam) plas, plas, plas, plas, plas ;)
[23:32] (iCorrecam) plas, plas, plas, plas, plas ;)
[23:32] ) y el log estara cuanto antes en la web
[23:33] (Luz) ok, gracias :) y excusadme el no haber tenido tiempo suficiente para que la exposicion fuera mas clara...
[23:33] ) es clarisima
[23:33] ) yo he aprendido un monton
[23:34] ) tendras que acabar de traducirla
[23:34] (Luz) gracias mjesus :)
[23:34] (Luz) mañana te envio la traduccion completa mjesus
[23:34] ) pero de verdad quen un a persona "normal" puede tocar el codigo ?
[23:34] (ork) no lo creo mjesus, de poder puedes pero ...
[23:34] (Luz) si quieres, pues claro...
[23:35] (ork) :-)
[23:35] (debUgo-) ork: eso pensaba...
[23:35] (ork) creo que hay personas valientes, conservadoras y cobardes :-)
[23:36] (Luz) de hecho, solo para actualizar el kernel (aunque ya hay distribuciones que lo hacen automaticamente) hacian falta los paquetes g++ y demas.... hablo del kernel antiguo.. antes del 2.nnn
[23:36] (ork) pero de todas maneras tienes que saber bastante
[23:36] (raddy) how do i CANCEL a download using lynx? while its downloading
[23:36] (raddy) without closing lynx
[23:36] (debUgo-) me fui
[23:36] (Luz) y tenias que compilar el kernel para actualizarlo y poder usar sus nuevas funciones...
[23:37] (ork) como? compilar el kernel para actualizar que cosa?
[23:38] (Luz) adios debugo... por cierto, que significa sensei?
[23:39] (ork) alguien que sepa japones?
[23:39] (hecubis) Where does one set the ip for ppp dial-in connection?
[23:39] (ork) :-)
[23:39] (oroz) ork: se siente
[23:39] ) konichiwa
[23:39] (trusmis) profesor............
[23:39] (Luz) bueno, creo que se esta haciendo tarde ...
[23:40] (trusmis) Luz: hay muchos problemas al pasar un driver de una version de kernel a otro
[23:40] (ork) debo irme Luz, realmente fue muy interesante, no aprendi mucho contenido, pero si aprendi que estoy en cuero en algo clave :-) y la verdad es que no se cual es ams importante
[23:40] (trusmis) quiero decir del 2.2.12 al 2.2.18 tienes que modificar algo o solo al pasar del 2.2 al 2.4
[23:43] (trusmis) Luz: quiero decir, con que frecuencia las actualizaciones del kernel te hacen tener que revisar el driver?
[23:45] (Luz) bueno, hay veces que un driver puede no funcionar porque algunas funciones ya no se escriben asi y el kernel no las comprende del todo..
[23:46] (trusmis) ok, pero solo de 2.2 a 2.4 o dentro de una misma serie estable?
[23:48] (Luz) pues depende de las nuevas funcionalidades de la nueva version del kernel..
[23:48] (trusmis) ok, depende del driver, me lo imaginaba
[23:50] (Luz) si el driver esta bien hecho, y has diferenciado bien todas sus funciones tendras que actualizar muy poco para que tu nuevo kernel funcione con el...
[23:54] (trusmis) Luz: de forma objetiva es muy dificil hacer un driver en linux? comparalo con otra cosa en dificultad si quieres
[23:55] (Luz) lo es, pero digamos que es mas complicado el ensamblador :)
[23:56] (Luz) no, pero no creas, no es dificil, lo que pasa es que es otra manera de programar, esto no es un delphi, ni un visual basic, ni un visual C...
[23:56] * trusmis disfruta con el ensamblador (<2000 lineas es legible)
[23:57] (Luz) jeje ;)
[23:58] (Luz) de todas formas, un driver no es mas complicado que un programa cualquiera...
[23:58] (trusmis) Luz: necesitas un conocimiento profundo del kernel?? hay que tener mas cuidado de lo normal con lo que haces??
[23:59] (Luz) el secreto esta en que el fabricante de hardware tenga el codigo abierto para que podamos saber como aprovechar al maximo las capacidedes del dispositivo...
[00:00] (Luz) hombre trusmis, claro que tienes que tener mas cuidado... pero lo bueno de linux es que no por eso te puedes cargar todo el sistema... aunque tambien depende de lo que hagas...
[00:00] (trusmis) yo me he cargado todo el sistema con un simple programa en entorno de usuario
[00:01] (Luz) a si? y que hiciste exactamente?
[00:02] (trusmis) crear tropecientos procesos,
[00:02] (trusmis) como no se podian crear nuevos procesos, no podia ejecutar nada
[00:03] (trusmis) y lo más curioso que ctrl+alt+sup no tiraba por la excesiva carga
[00:04] (Luz) ya, y no vaciaste antes?
[00:04] (trusmis) no fue a posta.....
[00:05] (trusmis) vaciar antes?
[00:06] (Luz) si, cuando pones algo en la memoria del kernel, la unica manera de quitarlo es liberandolo de la anterior funcion que no necesites...
[00:07] (Luz) hablo de eso en la conferencia, aunque igual no lo mencione mucho..
[00:07] (trusmis) fue un bug, solo pedia recursos y no me di cuenta que el codigo que lo liberaba no se ejecutaba........... esas cosas en un driver tienen que doler mas al sistema (digo yo)
[00:08] (trusmis) cual crees que es la mejor forma de hacer debug al driver?
[00:10] (trusmis) porque no creo que puedas hacerle un gdb al kernel y instalar uml me ha parecido algo complicado y no me fio demasiado de los resultados
[00:11] (Luz) yo no he probado el uml
[00:13] (trusmis) que sueles usar para comprobar que el driver está en perfecto estado o corregir errores
[00:13] (trusmis) vamos para hacer debug
[00:15] (Luz) la verdad es que hace un monton de tiempo que no programo en linux por falta de tiempo..
[00:17] (Luz) la forma mas simple de hacer un debug es usando la tecnica de monitoring
[00:17] (Luz) llamando a printf
[00:17] (trusmis) a base de printk??
[00:17] (Luz) que digo, printk
[00:20] (Luz) ya se que es muy elemental, pero si miras bien lo que esribes antes seguro que no tienes tantos fallos :)
[00:20] (Luz) que mala soy, jejeje, no, hay otras formas...
[00:21] (Luz) el printk escribe mensajes en un buffer circular que es
[00:22] (Luz) de x bytes de largo Log_buf_length
[00:22] (Luz) esto hace despertar cualquier proceso que esta esperando mensajes
[00:23] (Luz) tambien puedes hacer un debug a traves de un query
[00:23] (trusmis) ?? como??
[00:23] (Luz) es decir, si abusas mucho del printk puedes hacer que el sistema se ralentice a lo bestia
[00:24] (trusmis) jjeje, solo seria en la etapa de debug..........
[00:25] (Luz) porque el syslogd mantiene ensincroniacion los archivos de salida, y cada linea produce una operacion de disco
[00:26] (Luz) vale, vale... jeje
[00:27] (Luz) para hacer un query en elsistema, puedes creaer un archivo en el /proc del FS
[00:27] (Luz) y usando el metodo del driver del ioctl
[00:28] (Luz) sabes mas o menos lo que te estoy diciendo?
[00:28] (trusmis) ya he usado alguna vez, printk, y lo mas coñazo era tener que rearrancar para que pillase el nuevo kernel con los nuevos printk, entonces descubrias que tenias que ponerlos en otro lao y compilar y rearrancar y era un pelin lento aquello, no hay una forma de acelerar este proceso...... Supongo que no es llenar el nucleo de printk .. si no sabes donde falla puedes tenerq ue hacer demasiadas pruebas .........
[00:28] (trusmis) Luz: si lo se mas o menos , mas menos que mas, pero entiendo.....
[00:29] (Luz) me cuesta explicar esto en español, pero bueno... dime si al menos te va sirviendo lo que te digo...
[00:30] (trusmis) si me va sirviendo
[00:30] (trusmis) quieres que hablemos en ingles?
[00:30] (Luz) mira, el query en el sistema virtual de archivos de /proc no esta asociado con ningun dispositivo y sus archivos son generados por el kernel al ser leidos
[00:31] (Luz) no dejalo, asi voy practicando :)
[00:32] (Luz) lo interesante es crear un nodo
[00:32] (Luz) que sea completo y
[00:32] (Luz) dentro del /proc
[00:32] (trusmis) ya , /proc/midriver/*
[00:32] (Luz) que permita leer, escribir, buscar, etc
[00:33] (Luz) para eso tendras que definir una estructura del estilo file_operations
[00:33] (Luz) y un inode_operations
[00:34] (trusmis) y con todo eso?
[00:34] (Luz) que esan similares
[00:34] (Luz) sean similares
[00:34] (Luz) este nodo es mas o menos como crear un driver para un dispositivo char
[00:35] (Luz) por cierto, esto es valido para el kernel 2.0 en adelante
[00:36] (trusmis) ok
[00:36] (trusmis) todo claro hasta ahora
[00:36] (trusmis) tengo file_operations : open , seek close, .......... y ahora?
[00:36] (Luz) lo que esto hace es que en vez de atiborrar al kernel, haces que la funcion tenga una pagina libre para ser llenada con los datos
[00:37] (Luz) escribe en el buffer y devuelve el mismo tamaño que el que acaba de escribir
[00:37] (Luz) pero no te pases
[00:38] (Luz) que tal vas?
[00:38] (trusmis) ok, entonces necesito un script fuera que lea de /proc o dejo todo lo que quiero a lo guarro en la pagina, puedo usar mas de una página?
[00:38] (trusmis) que 4kb parecen poco ,(soy muy bestia)
[00:39] (Luz) a ver como te digo esto, te lo digo en ingles, porque me voy a liar al decirtelo en español:
[00:40] (trusmis) ok
[00:40] (Luz) you can use more than a data page to write, but you must fall back on the fullfeaatured file implementation
[00:40] (Luz) de todas formas no te pases con tantas paginas.....
[00:41] (trusmis) ok, i'll stick to one, con una espero me bastará
[00:41] (Luz) ademas, piensa que cada vez que tengas llamadas de lectura, aunque solo pilles algunos bytes, tu driver tendra que volver a reescribir el buffer
[00:42] (trusmis) tengo que reescribir la página cada vez??
[00:42] (trusmis) pues casi prefiero el sistema de los printk
[00:42] (Luz) y ademas de que todo vaya lentisimo y te duermas, habra un problema grave de sincronismo, porque estara fuera de linea
[00:43] (trusmis) cual los printk o el /proc
[00:43] (trusmis) ?
[00:43] (Luz) y se va a perder informacin, mas o menos como cuando estas capturando video, y si el disco es mas lento que la velocidad del puerto firewire, entonces vas a perder un monton de frames...
[00:43] (trusmis) umm, menos mal que dices que es fácil
[00:44] (Luz) los /proc
[00:44] (Luz) tambien puedes hacer un debug con el ioctl
[00:45] (Luz) el ioctl, como ya deberias de saber, es una llamada al sistema
[00:45] (trusmis) sisi, lo se
[00:45] (trusmis) muy potente
[00:45] (Luz) que actua como un archivo descriptivo (descriptr)
[00:45] (Luz) recibe un "numero de comando"
[00:46] (Luz) y opcionalmente un argumento
[00:46] (Luz) generalmente un puntero
[00:46] (trusmis) ok
[00:47] (Luz) puedes usar varios comandos ioctl, que copian estructuras de datos relevantes desde el driver al espacio del usuario
[00:48] (Luz) en donde puedes observar lo que hace y ver ue es lo que falla
[00:48] (trusmis) eso es copy_to_user??
[00:48] (Luz) exacto
[00:48] (trusmis) ok
[00:49] (Luz) por supuesto tu driver sera mucho mas grande....
[00:49] (Luz) pero te recomiendo que explores el ioctl
[00:50] (Luz) tiene un monton de comanods sin documentar
[00:50] (Luz) byes kerb
[00:50] (trusmis) ahh, truquillos de experto , bien bien
[00:51] (Luz) jeje...
[00:52] (Luz) bueno, por donde vas?
[00:52] (trusmis) yo, lo he entendido todo bien, muchas gracias
[00:53] (Luz) tambien puedes enviar oops mensajes al NULL
[00:53] (Luz) y sobretodo mirar que has escrito
[00:53] (trusmis) ¿?¿?
[00:54] (Luz) si, si tienes un fallo del sistema
[00:55] (Luz) si usas el peligrosisimo kmalloc puedes perder informacion sobre el proceso y cargartelo todo
[00:56] (trusmis) kmalloc es peligrosísimo?? como cogo memoria entonces?
[00:56] (Luz) peligrosisimo, depende de como lo uses...
[00:56] * Borja interrumpe con una noticia...
[00:56] (Borja) Acaban de liberar el fuente de Solaris 8
[00:56] (trusmis) Borja: hay que enviarles un fax
[00:57] * trusmis se pregunta como lo podría hacer
[00:57] (trusmis) Luz: pero hay otra forma de coger memoria?
[00:57] (trusmis) cual es la forma erronea de usarlo?
[00:57] (Luz) wow, que bien slow-aris open source!
[00:57] * trusmis pregunta demasiado
[00:57] (Luz) que bien, virus contagioso!
[00:57] (Borja) slow-aris? No dirías lo mismo de su rendimiento en SPARC :-)
[00:58] (Luz) cierto boja... se nota que no tengo un sparc... pero lo seguro que el sparc es tan rapido que va volando hasta con el mismisimo solaris!! ;P
[00:58] (Luz) jeje
[00:59] (Luz) perdona trusmis
[01:00] (Luz) tienes que coger memoria con kmalloc , pero el tema es que has de tener un forma de liberar la memoria que has asignado...
[01:00] (trusmis) kfree?? o algo así
[01:01] (Luz) si, el kfree, por ejemplo
[01:02] (Luz) por cierto, creo que hablo de esto en la conferencia tambien, vuelvetela a leer... aunque igual se ha cortado en trozos..
[01:02] (Luz) de todas formas otra manera de hacerlo es a traves de los mensajes oops
[01:03] (trusmis) es que no he llegado a tiempo y no está aún en umeet :( lo siento, la leere en cuanto esté
[01:03] (Luz) , si tienes un error gordo, y el mecanismo de paginacion falla al mapear el puntero
[01:04] (Luz) y la direccion no es valida, no se puede paginar la direccion que falta, y se genera un
[01:05] (Luz) mensaje oops (algo asi como de oops, metedura de pata, en ingles)
[01:05] (trusmis) sisi, he visto ooops mas de una vez
[01:05] (Luz) si te pones modo supervisor
[01:05] (Luz) pues eso
[01:07] (Luz) estudiate bien las page tables
[01:07] (Luz) el mmap y como funcionan las dma, y dale caña al asunto
[01:07] (trusmis) si, quiero aprender(en cuanto tenga tiempo) sobre page tables, page directories, selectores, segmentos.............
[01:08] (jbonis) ya estoy aquí otra vez
[01:08] (Luz) rehoas jbonis
[01:08] (trusmis) por cierto no sabras si el kernel usa %fs para si o no?
[01:08] (trusmis) en x86 digo
[01:08] (Luz) otra utilidad que puedes usar es el ksymoops
[01:09] (Luz) lo que pasa es que desde la version 1.3 o 1.2 del kernel ya lo quitaron...
[01:09] (trusmis) ksymoops ?, cuenta.........
[01:09] (trusmis) ya, linus quiere que el kernel sea cosa de hombres, sin ayuda........
[01:10] (Luz) pues el ksymoops pillaba los oops en linea de comandos
[01:11] (Luz) eso de hombres va en sentido masculino del asunto, o en sentido general de la raza humana?
[01:11] (Luz) es que yo soy chica .. grrrr
[01:11] (Kefar) :)
[01:12] (trusmis) en el sentido de que tiene que ser difícil...... no soy machista ni nada así, es un sentido figurado (además lo dijo el)
[01:12] (Luz) el ksymoops pillaba e imprimia el call trace
[01:12] (Luz) ok, ok, jejeje vale...
[01:12] (Borja) Ken Thompson ha abandonado los Laboratorios Bell
[01:13] (Luz) en un fomato mas legible que en el oops
[01:13] (Luz) vaya
[01:13] (Luz) y le han ofrecido algun puesto mejor?
[01:13] (trusmis) ahh,imagino que el módulo ha seguido actualizado para los kernels actuales
[01:13] (Luz) en realidad el ksymoops desemblaba codigo
[01:14] (Borja) Se va a trabajar como instructor de vuelo.
[01:14] (Luz) instructor de vuelo???!
[01:14] (Luz) pues no, ese ksymoops ya no sale en ninguna nueva version de kernel...
[01:15] (Luz) ya te digo, la 1.2 o la 1.3, no recuerdo exactamente en cual dejo de aparecer..
[01:15] (trusmis) nono digo como modulo aparte
[01:15] (trusmis) por ahí en alguna web perdida de la mano de Linus
[01:15] (Luz) AH, ah, ok...
[01:15] (Luz) o en algun cd de esos antiguos
[01:16] (Luz) con alguna verion prehistorica del slakware...
Contact:
|