tlaronde | 10 Feb 22:40 2016

bad character set for rune...


I'm on the way to install Plan9 on a new node.

Since with the CDROM or the (different flavors of) USB images, it
doesn't work, I'm "bootstrapping" by hand.

I have made, from an external OS (NetBSD), a plan9 partition with the
initial 9fat configured and populated in order to be able to boot boot.

Since, so far, I have been unable to convince the 9pccd kernel to read
an iso file of the root file system put whether in the 9fat or in plan9
partition in a "fs" subpartition, I'm now serving a root filesystem
via 9P2000, from another node.

Well, it works, but when launching the installation (I have copied the
various scripts so that they are in the served /), I have the message,
continuously repeated:

bad character set for rune 0x0000 in /lib/font/bit/lucm/unicode.9.font

since it is the font loaded for rio. (The rio windows are blank, the
message is on the "console".)

Has anybody any clue about what is causing this? Can a program needed to
read/decompress/whatever the font be missing (I have tried to put on the
root only what is needed)? If yes, what is this program?


(Continue reading)

arisawa | 10 Feb 02:40 2016

bell-labs wiki page

hello 9fans,

bell-labs wiki page is down.
Object not found

is there any mirror of that wiki?

Kenji Arisawa

Winston Kodogo | 10 Feb 02:02 2016

BCD encoding in Plan9 - don't shoot me

So, I'm working with ISO8583,  a "standard" (HAHAHAH!!!!!)  The "standard" allows  but does not require, BCD encoding of numerical data. Which may or may not have a BCD-encoded numerical length prefix. The prefix may or may not be 1 to 3 bytes in length. Or the data might come with no prefix, and be right justified in a fixed width field of known size. Or left justified. So hard to tell these days.

But I ramble. So I was just wanting to ask if anyone here has any simple BCD conversion routines.

But, actually, ignore the subject line. Just shoot me.
Steve Simon | 8 Feb 00:26 2016

smtpd in modern times.

I have been running my a smtp server on plan9 for about
10 years but  I beleive I am having more and more incomming
mail bounce because of plan9's lack of support for tls 1.2.

What is anyone else doing about this?

	stop ovvering ESMTP in smptd?

	Using a 3rd party smtpd supplier (google?)

	Does 9front support tls1.2 now?

	use facebook instead of email (joke).


-Steve (hoping replies don't bounce)

Bruce Ellis | 7 Feb 03:04 2016


Not to burst a balloon but check out variable length ints in the Midi File Format for utf-8 in the early 80s.

Prof Brucee | 5 Feb 05:27 2016


Anyone played with a Dragan?

a | 3 Feb 21:08 2016

Plan 9 and Google's Summer of Code

	The window for mentor organizations to apply for Google's
Summer of Code 2016 opens on Monday, February 8th, and we'll
be applying again. As in the past several years, I'll be submitting an
application for us to participate as an "umbrella organization", and
we'll happily accept applications for projects relating to Plan 9,
Inferno, Plan 9 from User Space, or any of the related technolgoies.
Erik has volunteered to again serve as our backup org admin.

	There have been some changes to the program this year, but
for the most part it's as you remember: college & university students
18 and over are invited to apply to a list of mentoring organizations
and, if selected, paired with a mentor to work on a specific project.
The most significant change from previous years is probably that
students may only participate a maximum of 3 times (as students;
you're welcome to talk to us about being a mentor!). For a full
rundown on the program, check out Google's Summer of Code site[1].

	I've started the process of updating the wiki information, but
it's not all there yet; feel free to help out. In particular, as always,
we need to make sure our Ideas page is in good shape by the
time the application period ends — this is usually the main factor
determining which orgs get selected; please take a look[2].

	If you'd be interested in being a mentor, co-mentor, or
backup mentor, please either speak up here or drop me a line. If you
have specific ideas you'd like to work on, please add them to the
Ideas page on the wiki, or pass them along and I'll fill them in. If you
would like to mentor but don't have a specific project idea, that's
cool to; just let me know. If you're in contact with students, please
start getting them thinking about spending their summer with us.

	If you have any questions about the program or how to
participate, feel free to ask here, drop me a line, or come find me on
IRC (, anth in #plan9, #inferno, and #plan9-gsoc).
We've also got a GSoC-specific mailing list I'd encourage you to
sign up for, or browse discussions from previous years[3].

	Google has produced a lot of material to help both mentors
and students better understand the program and increase their
odds of acceptance and success. If you're interested in reading
more, I suggest starting with their SoC manuals[4].

Your friendly neighborhood org admin,


[2] The web interface to the wiki is currently down, but you can get
at it via the Acme interface. The page is GSoC-2016-ideas.



Tiago Natel | 3 Feb 15:06 2016

9front: Man pages of atomic functions

Hello folks,

I'm looking for the man page of atomic functions (cas, ainc, adec, etc) of libc, but where it is?

I found on the cat-v website, but not in 9front:

cpu% man 2 atom
man: no manual page
cpu% man atom
man: no manual page
cpu% man 2 ainc
man: no manual page
cpu% lookman atom
man 1 hg # hg(1)
man 2 iounit # iounit(2)
man 2 lock # lock(2)
man 2 open # open(2)
man 2 read # read(2)
man 2 semacquire # semacquire(2)
man 3 pipe # pipe(3)
man 4 upasfs # upasfs(4)
man 5 open # open(5)
man 5 read # read(5)
man 8 replica # replica(8)

But they exists: /sys/src/libc/amd64/atom.s


Giacomo Tesio | 1 Feb 17:47 2016

FP register usage in Plan9 assembler

I'm studying the 9front's amd64 kernel, and I'm pretty new to assembler programming, so sorry if my question is too dumb...

I cannot understand the FP pseudo register usage.
The cpuid function, for example, is implemented as

 * The CPUID instruction is always supported on the amd64.
TEXT cpuid(SB), $-4
    MOVL    RARG, AX            /* function in AX */

    MOVQ    info+8(FP), BP
    MOVL    AX, 0(BP)
    MOVL    BX, 4(BP)
    MOVL    CX, 8(BP)
    MOVL    DX, 12(BP)

What I miss is where "info" comes from. I cannot

Apparently the GAS equivalent is:

.align 4
.globl cpuid
    mov    %ebp,%eax
    mov    0x10(%rsp),%rbp
    mov    %eax,0x0(%rbp)
    mov    %ebx,0x4(%rbp)
    mov    %ecx,0x8(%rbp)
    mov    %edx,0xc(%rbp)

Thus apparently info+8(FP) becomes 0x10(%rsp) 
Why? I know that FP is a pseudo register, but shouldn't it be different from SP?

And why info's value is 8? Is it the pointer size?

Another example:

TEXT insb(SB), 1, $-4
    MOVL    RARG, DX            /* MOVL    port+0(FP), DX */
    MOVQ    address+8(FP), DI
    MOVL    count+16(FP), CX
    REP;    INSB

should be equivalent to

.align 4
.globl insb
    mov    %ebp,%edx
    mov    0x10(%rsp),%rdi
    mov    0x18(%rsp),%ecx
    rep insb

Again I cannot find a definition of address and count, but both seem to be be valued as 8, why?


Tiago Natel | 1 Feb 22:54 2016

Fwd: lib9p: Add clunk callback to Srv struct

Someone here can help me?

---------- Forwarded message ----------
From: Tiago Natel <tiago.natel <at>>
Date: 2016-02-01 19:17 GMT-02:00
Subject: lib9p: Add clunk callback to Srv struct
To: 9front <at>

Hello folks,

Is there a reason why lib9p doesn't have a clunk function pointer in Srv struct?

I have a file server project using Srv and I want to know when no one client have a specific file opened. 

One way that I was able to get this working was forking 9front and adding a clunk callback to Srv structure. See the commit below:

My project usage of the clunk routine is here:

This makes sense? Or is there better ways to achieve this?
And if that makes sense, it can go upstream?


tlaronde | 1 Feb 21:43 2016

kerTeX update; but please wait for rio...


I have updated kerTeX with the latest sources from Donald E. Knuth (and
the latest version of the AMS fonts).

Mainly (I have only resumed working on it after months of ENOTIME), I
wanted to add METAFONT online graphics output (the rendering on screen
of METAFONT drawing) and have done it for X11 2D system. (Why? First,
because it allows to use the totality of what is described in the
METAFONTbook; Second, because it shows that METAFONT is not only a
interpreter/compiler for a drawing language but a _rasterizer_. Smaller
than gs if you see what I mean...)

The next 2D interface will be Plan9/rio (I will finish with "native"
compilation on Windows and Windows/GDI).

So please wait a little, time for me to restore a plan9 environment and
to put the rio interface for METAFONT.

It should not take long... if I find the correct slot of free time...


        Thierry Laronde <tlaronde +AT+ polynum +dot+ com>
Key fingerprint = 0FF7 E906 FBAF FE95 FD89  250D 52B1 AE95 6006 F40C