In the plan9
specific Go code for syscall
, there is no Stat_t
like with other GOOS
. Where is Stat_t
, or its equivalent defined?
TL;DR: It's the *syscall.Dir
type. Read on for details.
The source for os.Stat
on Plan9 is here. It calls dirstat
, which is defined here. It feeds the return value of dirstat
into fileInfoFromStat
, which is defined in the same file here.
In the case of paths (as opposed to *File
objects), dirstat
just calls syscall.Stat
, which is basically just a thin wrapper around stat
. syscall.Stat
expects a byte buffer to be able to write into. This buffer is processed a bit (see dirstat
for details), and then fed into syscall.UnmarshalDir
, which is where the magic happens. The documentation states that it "decodes a single 9P stat message" from a buffer and returns a *syscall.Dir
.
dirstat
then passes this *syscall.Dir
to fileInfoFromStat
, which is what processes it into a FileInfo
. It's this *syscall.Dir
value that is obtained through the Sys()
method on the FileInfo
object.