Az x86 setup kód átírása

Címkék

H. Peter Anvin egy patch sorozatot készített, amely lecseréli a jelenlegi, assembly-ben írt x86 setup kódot egy C-ben írt verzióra. A magyarázat szerint az új kód sokkal átláthatóbb és remélhetőleg jobban debug-olható. A munka során Peter több kisebb bugba botlott és azokat megpróbálta kijavítani. Linusnak nincs ellenére a csere.

Ahogy írta nem csak kisebb az új kód, de szerinte jó ötlet a legtöbb esetben olvashatatlan assembly programsorokat átlátható C-re cserélni. Linus kérdése az volt, hogy olvasszák be most a munkát, vagy előbb teszteljék az -mm fában és kerüljön bele majd a következő kernelekbe. Andrew Morton jelezte, hogy a patch már egy ideje az -mm fában van, nagy problémát nem okozott, szerinte kész a beolvasztásra. Linus nyugtázta és jelezte, hogy beolvasztja. Bővebben a KernelTrap cikkében.

Hozzászólások

már benne van kb két napja és működik

Nekem mindig igazam van, ha nem, akkor nincs igazam, szoval megint igazam van hogy nincs igazam.

debian 4.0 - linux-2.6.22-pancs1-wifi0 - 2.6.22 kernel madwifivel itt

Heh, valaki kitalalt valamit, ami jobb, mint a regi valtozata, akadalymentesen el is fogadtak. Igy kene minden ujitasnak mennie. :)

"i pensieri stretti & il viso sciolto." -- Sir Henry Wootton

"...legtöbb esetben olvashatatlan assembly programsorokat átlátható C-re cserélni..."

Hehehe... tessék megtanulni olvasni :-) A C-ben leírt dolgokból lesz "valami", pontosabban az, amit a fordító gondol arról, hogy a kóder mit szeretett volna. Az asm-ben meg az van leírva, amit a programozó gondol arról, hogy mit kell csinálni. Ez utóbbihoz persze sokkal több speciális tudás, kell, és a szó leg szorosabb értelmében bitfaragás, de épp ezért jó... A következő meg az lesz, hogy az olvashatatlan C-kódot cseréljük le a jól olvasható (tetszőleges kedvenc) nyelvre...

mért nem egyből javába, az még olvashatóbb (a javásoknak)

ez az a kód, amit egykor maga Linus írt - többé-kevésbé?

igen ez az x86-os bootstrap kódja,

arch/i386/boot/boot.h:


 *   Copyright (C) 1991, 1992 Linus Torvalds
 *   Copyright 2007 rPath, Inc. - All Rights Reserved

Nekem mindig igazam van, ha nem, akkor nincs igazam, szoval megint igazam van hogy nincs igazam.

debian 4.0 - linux-2.6.22-pancs1-wifi0 - 2.6.22 kernel madwifivel itt

Az olvashatóságon kívül van valami komolyabb oka a cserének? Véleményem szerint ha valami asm-ben lett megírva, annak oka van/volt.

szerintem a különböző virtualizációs megoldások miatt, pl xen, paravirt és kvm. ha jól tudom akkor a xen a 2.6.23-ban fog megjelenni

Nekem mindig igazam van, ha nem, akkor nincs igazam, szoval megint igazam van hogy nincs igazam.

debian 4.0 - linux-2.6.22-pancs1-wifi0 - 2.6.22 kernel madwifivel itt

-mm tervek között szerepelt és fenn vagyok a kernel-devel listán

http://lkml.org/lkml/2007/7/17/22


Hi Linus,

The following changes since commit a5fcaa210626a79465321e344c91a6a7dc3881fa:
  Linus Torvalds (1):
        Merge branch 'drm-patches' of ssh://master.kernel.org/.../airlied/drm-2.6

are available in the git repository at:

  ssh://master.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git xen-upstream

Thanks,
	J

Jeremy Fitzhardinge (44):
      add kstrndup
      add argv_split()
      usermodehelper: split setup from execution
      Add common orderly_poweroff()
      usermodehelper: Tidy up waiting
      use elfnote.h to generate vsyscall notes.
      paravirt: add an "mm" argument to alloc_pt
      paravirt: add a hook for once the allocator is ready
      paravirt: increase IRQ limit
      paravirt: unstatic leave_mm
      paravirt: unstatic smp_store_cpu_info
      paravirt: make siblingmap functions visible
      paravirt: export __supported_pte_mask
      Allocate and free vmalloc areas
      paravirt: helper to disable all IO space
      Add a sched_clock paravirt_op
      Add nosegneg capability to the vsyscall page notes
      xen: Add Xen interface header files
      xen: Core Xen implementation
      xen: virtual mmu
      xen: event channels
      xen: time implementation
      xen: configuration
      xen: add pinned page flag
      xen: Complete pagetable pinning
      xen: ignore RW mapping of RO pages in pagetable_init
      xen: Account for stolen time
      xen: Implement sched_clock
      xen: SMP guest support
      xen: Add support for preemption
      xen: lazy-mmu operations
      xen: hack to prevent bad segment register reload
      xen: use the hvc console infrastructure for Xen console
      xen: Add grant table support
      xen: add the Xenbus sysfs and virtual device hotplug driver
      xen: add virtual block device driver.
      xen: add virtual network device driver
      xen: machine operations
      xen: handle external requests for shutdown, reboot and sysrq
      xen: Place vcpu_info structure into per-cpu memory
      xen: Attempt to patch inline versions of common operations
      xen: suppress abs symbol warnings for unused reloc pointers
      xen: use iret directly when possible
      xen: disable all non-virtual drivers

Nekem mindig igazam van, ha nem, akkor nincs igazam, szoval megint igazam van hogy nincs igazam.

debian 4.0 - linux-2.6.22-pancs1-wifi0 - 2.6.22 kernel madwifivel itt