
History of the Plan 9 kernel (1990 – 2003) - 0intro
https://github.com/0intro/9hist
======
senozhatsky
Pretty interesting. They use _nil_ pointers everywhere, but also mention a
NULL pointer:

    
    
        pc/ether82557.c:        NullPointer     = 0xFFFFFFFF,   /* 82557 NULL pointer */
    
    

Or qget():

    
    
        /*                                                                              
         *  get next block from a queue, return null if nothing there                   
         */
    
            if(b == nil){
                    q->state |= Qstarve;
                    iunlock(q);
                    return nil;
            }
    

So null and nil pointers.

It was always interesting to me; there were null-terminated strings and null-
bytes [0], but _nil_ pointers. And then, occasionally, null and NULL pointers.

[0] [https://www.unix.com/man-page/plan9/2/strcat/](https://www.unix.com/man-
page/plan9/2/strcat/)

-ss

~~~
projektfu
The all-ones Null Pointer are part of the software interface of the 82557
ethernet controller.

[https://www.intel.com/content/dam/doc/manual/8255x-10-100-mb...](https://www.intel.com/content/dam/doc/manual/8255x-10-100-mbps-
ethernet-controller-software-dev-manual.pdf)

------
aap_
Very cool. I've been meaning to convert 9hist to some version control system
too for some time but never got around to it. Glad somebody else did.

