Linux Kernelprogrammierung LWN - summary: ============== 14.04.2011: ^^^^^^^^^^^ 2.6.39-rc3 is out: It's been another almost spookily calm week. Usually this kind of calmness happens much later in the -rc series (during -rc7 or -rc8, say), but I'm not going to complain. I'm just still waiting for the other shoe to drop. And it is possible that this really ended up being a very calm release cycle. We certainly didn't have any big revolutionary changes like the name lookup stuff we had last cycle. So I'm quietly optimistic that no shoe-drop will happen. Anyway, not only has it been calm, it's been pretty normal. Two thirds drivers is pretty normal, with the rest being fairly spread out all over. Let's hope the release cycle continues like this. I _like_ it when people really seem to follow the whole "big changes during the merge window" rules. Thanks guys, Linus ... Artem Bityutskiy (10): UBIFS: do not read flash unnecessarily UBIFS: fix oops on error path in read_pnode UBIFS: fix assertion warnings UBIFS: do not select KALLSYMS_ALL UBIFS: unify error path dbg_debugfs_init_fs UBIFS: fix error path in dbg_debugfs_init_fs UBIFS: fix debugging failure in dbg_check_space_info UBI: check if we are in RO mode in the erase routine UBI: do not compare array with NULL UBI: do not select KALLSYMS_ALL Ben Dooks (1): gpio/pca953x: fix error handling path in probe() call Bryan Schumaker (2): NFS: Fix a signed vs. unsigned secinfo bug ... 08.04.2011: ^^^^^^^^^^^ Quotes of the week II: in memoriam Linux has lost a great developer with the passing of David Brownell recently and he will be greatly missed. -- Greg Kroah-Hartman David made contributions to a large number of areas in the Linux kernel. Even a quick look through MAINTAINERS will show that he worked on USB controllers (OHCI, EHCI, OMAP and others), USB gadgets, USB networking, and SPI. He was influential in the core USB design (the HCD "glue" layer and the scatter-gather library) and the development of Power Management (system sleep and the USB PM implementation). His designs were elegant and his code was always a pleasure to read. He also was a big help to me personally, assisting in my initial entry to USB core development. And he was the first person I met at the first Linux conference I attended. I too will miss him. -- Alan Stern I guess many of us have similar experience with Dave. He also helped me a lot when I first started doing Linux development. I learned a lot from him and will miss him a lot. His teachings, I will always carry with me. -- Felipe Balbi - 2.6.39-rc2 is out 35% arch (ARM and power, some unicore32 cleanups) 35% drivers (net, input and some drm) 30% random (doc updates, perf, net, btrfs). Because it's such a small -rc, I'm appending the shortlog, something I usually don't get to do until -rc3 or -rc4. This should hopefully fix up the most annoying -rc1 problems. We had a couple, like the plugging issues with the IDE layer, causing some machines to not boot. Or the tty-full-and-hung one. And just the small fallout from the irq cleanups (which affected a couple of less common platforms). But on the whole really not a lot. Which is sincerely _hope_ is a sign that 2.6.39 is going to be a simple release. Knock wood. Go out and test, Linus - GNOME 3 is released 01.04.2011: ^^^^^^^^^^^ - GCC 4.6.0 is out support for the Go language, improved C++0x support, many optimization improvements including a "scalable whole program optimizer" which is said to be stable enough to use, a new -Ofast option, and more.. - 2.6.39-rc1 is out There have been just over 2,200 non-merge changesets pulled into the mainline since last week; that makes 8,757 total changes for this development cycle. - an option to force all interrupt handlers to run as threads - The media controller subsystem - The CHOKe packet scheduler - There is a new "mtdswap" block device which allows swapping directly to memory technology devices. - printk() and friends have a new "%pB" format specifier which prints a backtrace symbol and its offset. - Jump Label reworked #include struct jump_label_key my_key; Enabling and disabling the key is a simple matter of calling: jump_label_inc(struct jump_label_key *key); jump_label_dec(struct jump_label_key *key); And using the key to control the execution of rarely-needed code becomes: if (static_branch(&my_key)) { /* Unlikely stuff happens here */ } The 2.6.39 kernel now goes into the stabilization phase of the development cycle. If the usual pattern holds, we can expect to see on the order of 2000 fixes merged between now and the final release, which is likely to happen in early June. Quotes of the week The C preprocessor... It is ugly, inelegant, painful, annoying, and should have been strangled at birth -- but it is always there when you need it! -- Paul McKenney Make Linux Software presents the fastest ever embedded Linux boot for 720 MHz ARM and NAND flash memory. Linux boot time is 300 milliseconds from boot loader to shell. -- Constantine Shulyupin 25.03.2011: ^^^^^^^^^^^ - As always lots of new drivers :)) Processors and systems: VIA/WonderMedia VT8500/WM85xx System-on-Chips, IMX27 IPCAM boards, and MX51 Genesi Efika Smartbook systems. Block: Broadcom NetXtreme II FCoE controllers and Freescale MXS Multimedia Card interfaces. Graphics: Intel GMA500 controllers (2D acceleration only), USB-connected graphics devices, MXS LCD framebuffer devices, and LD9040 AMOLED panels. Input: Hyper-V virtualized mice, Roccat Kova[+] mouse devices, Roccat Arvo keyboards, Wolfson WM831x PMIC touchscreen controllers, Atmel AT42QT1070 touch sensor chips, and Texas Instruments TSC2005 touchscreen controllers. Networking: Texas Instruments WiLink7 bluetooth controllers (from staging), Bosch C_CAN controllers, Faraday FTMAC100 10/100 Ethernet controllers, and the Xen "netback" back-end driver. Miscellaneous: Faraday FUSB300 USB peripheral controllers, OMAP USBHS host controllers, NVIDIA Tegra USB host controllers, Texas Instruments PRUSS-connected devices, MSM UARTs, Maxim MAX517/518/519 DACs, RealTek PCI-E card readers, Analog Devices ad7606, ad7606-6, and ad7606-4 analog to digital converters, Maxim MAX6639 temperature monitors, Maxim MAX8688, MAX16064, MAX34440 and MAX34441 hardware monitoring chips, Lineage compact power line power entry modules, PMBus-compliant hardware monitoring devices, Linear Technology LTC4151 is high voltage I2C current and voltage monitors, Intel SCU watchdog devices, Ingenic jz4740 SoC hardware watchdogs, Xen watchdog devices, NVIDIA Tegra internal I2C controllers, Freescale i.MX28 I2C interfaces, MXS Application UART (AUART) ports, SuperH SPI controllers, Altera SPI controllers, OpenCores tiny SPI controllers, SMSC SCH5627 Super-I/O hardware monitoring chips, Texas Instruments ADS1015 12-bit 4-input ADC devices, Diolan U2C-12 USB adapters, SPEAr13XX PCIe controllers (in "gadget" mode), and Freescale MXS-based SoC i.MX23/28 DMA engines. Sound: Firewire-connected sound devices, Wolfson Micro WM8991 codecs, Cirrus CS4271 codecs, Freescale SGTL5000 codecs, TI tlv320aic32x4 codecs, Maxim MAX9850 codecs, and TerraTec 6fire DMX USB interfaces. Outgoing: A number of TTY drivers (epca, ip2, istallion, riscom8, serial167, specialix, stallion, generic_serial, rio, ser_a2232, sx, and vme_scc) have been moved to the staging tree in anticipation of removal in 2.6.41. The smbfs and autofs3 filesystems, which were moved to staging in 2.6.37, have now been moved out of the kernel entirely. - BKL http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4ba8216cd90560bc402f52076f64d8546e8aefcb - New syscall: int syncfs(int fd); - The USB core has gained support for USB 3.0 hubs - New Dynamic Debugging Features tpm_nsc.c 346: dev_dbg(&pdev->dev, "NSC TPM detected\n"); echo file tpm_nsc.c line 346 +p > .../dynamic_debug/control echo file tpm_nsc.c line 346-373 +p > .../dynamic_debug/control echo file tpm_nsc.c function init_nsc +p > .../dynamic_debug/control - new set of string-to-integer converters which is expected to be used in preference to all others. Unsigned conversions can be done with any of kstrtoull(), kstrtoul(), kstrtouint(), kstrtou64(), kstrtou32(), kstrtou16(), kstrtou8(). Conversions to signed integers can be done with kstrtoll(), kstrtol(), kstrtoint(), kstrtos64(), kstrtos32(), kstrtos16(), or kstrtos8(). All of these functions are marked __must_check, so callers are expected to check to ensure that the conversion happened successfully. The older functions are marked deprecated, and will eventually be removed. These new kstrto*() functions are now the Official Best Way To Convert Strings, so developers need wonder no longer. Linuxtag: ========= Mi 11. - Sa 14. Mai Messe Berlin - Vorlesung entfällt Excursion from 10th to 15th of May. Conference Schedule online Costs: Hier könnte man im Doppelzimmer für 15 EUR / Person / Tag übernachten: http://www.winters-hotel-berlin-city-messe.de/ RV ab Di, 10.05. 21:04, Berlin an Mi, 11.05. 07:20 (2 x umsteigen) 234 EUR Berlin ab So, 15.05. 12:42, RV an So, 15.05. 21:07 (3 x umsteigen) 359 EUR Damit läge die Zugfahrt bei ca. 118 EUR / Person + 60 EUR übernachtung (im Doppelzimmer) + 16 EUR Eintritt Linuxtag + ca. 15 EUR U-Bahn Tickets (Gruppentageskarte 5 Pers. 15 EUR * 5 Tage) --> ~210 EUR maybe 50 - 70 EUR grant from University Plesae mail me until Monday if you want to join. (manut@mecka.net) Prüfung: ======== schriftlich, 60 Minuten Material: ========= http://manut.eu/hswgt Script: ======= Mitschriebe gerne an manut@mecka.net Literatur: ========== http://lwn.net http://heise.de/open <-- Kernel Log http://kernelnewbies.org http://beagleboard.org Corbet, Rubini, Kroah-Hartmann: Linux Device Drivers 3rd Edition http://lwn.net/Kernel/LDD3 Kroah-Hartmann: Linux Kernel In A Nutshell http://www.kroah.com/lkn Bovet, Cesati: Understanding The Linux Kernel (34,95) Love: Linux Kernel Development (29,95 EUR) Bewertung: ========== http://www.meinprof.de/uni/prof/51131 weitere Termine: ================ 03. Juni Blutfreitag Vorlesung entfällt 17. Juni Pfingsten Vorlesung entfällt 01. Juli letzte Vorlesung geplante Themen: ================ UE0 - what is linux: -------------------- Linux Desktop vs. embedded Linux: - Kernel vs. Userspace - Fedora, Debian, ubuntu .. - Android - KDE / GNOME - CPU Architekturen - cross UE1 - kernel basics, kernel best practices, kernel api: ------------------------------------------------------- Kernelentwicklung - Mainline / Maintainer - syscalls (stabil) - interne API (instabil) Versionskontrolle: - diff / patch - quilt - git UE2 - kernel build, bootloader: ------------------------------- Board Bringup: - Bootloader - grub vs. IPL vs. u-boot Kernel: - Kernel konfigurieren - Kernel kompilieren (auch cross) - Kernel Dokumentation UE3: ---- Dateisysteme: Desktop: - ext2/3/4 - xfs Embedded: - jffs2 - ubifs Flash: - SDCard, CF vs. NAND Netzwerk: - NFS UE4: ---- Userspace: - RFS generieren - busybox / cross - read only RFS - 'kein' RFS vs. full-featured Debian UE5: ---- Kernelarchitektur: - Core - Driver - Arch - Coding Style UE6: ---- Kernelmodule: - 1. Kernelmodul 'Hello world' registrieren bei Subsystemen: - char dev UE7: ---- Tracing UE8: ---- Kernelkonzepte: Review eines Treibers: - IRQ Handling - MM - Timer UE9: ---- Echtzeit: - RTAI vs. RT_PREEMPT - Grenzen - cyclictest UE10: ---- UIO: - UIO LPT Beispiel - RT Performance messen UE11: ----- MIDI: - Basics - Midi & Linux UE12: ----- IRQ Handling, Locking, .. UE13: ----- ALSA: - Kernel-/Userspace-Architektur - Tools - Synthesizer UE14: ----- Linux & Grafik oder ein anderes aktuelles Thema UE15: ----- Q&A tglx