Warum macht man soetwas?



  • Hoi! 😉

    Hab gerade etwas in Linux manpages gestöbert und bin über das hier gestolpert:

    tty_nr %d The controlling terminal of the process. (The minor device number is contained in the combination of bits 31 to 20 and 7 to 0; the major device number is in bits 15 to 8.)

    Wieso verteilt man die Minor Number an zwei Teilen im D-Word (mit obendrein unschönen Bitlängen), steckt die Major in die Mitte und lässt noch 4 Bit frei?
    Das ist doch mega umständlich, vor allem wenn man doch einfach das ms/ls Word benutzen könnte.
    Ich versteh soetwas nicht, kann mich bitte jemand aufklären wie man auf solche Ideen kommt?

    Und noch interessanter, wie würde man am effizientesten die beiden Zahlen extrahieren? Bei mir würde das in ner Menge shiften/kopieren/maskieren enden ...

    Grüße,
    Ethon



  • Die "krummen" Werte kommen dir nur so vor, weil du nicht mit nullbasierten Indizes umgehen kannst. Die Anordnung würde ich auf Endianess-Unterschiede zurückführen.



  • Geraten: Früher war das Ding in einem 16-Bit Integer, darin das Lowbyte für Minor und das Highbyte für Major. Bei der Umstellung auf 32 Bit haben die halt die obersten 12 noch auf die Minor draufgelegt und 4 sind reserviert. Die obersten 12 deshalb, weil man dann eine Maske weniger braucht.

    Rückwärtskompatibilität halt.


Anmelden zum Antworten