NAME
newchan, chanfree, cclose, eqqid, eqchan, isdir, fdtochan, namec
– channel operations |
SYNOPSIS
Chan* newchan(void) void chanfree(Chan *c) int eqqid(Qid a, Qid b) int eqchan(Chan *a, Chan *b, int pathonly) void isdir(Chan *c) Chan* fdtochan(Fgrp *f, int fd, int mode, int chkmnt, int iref) Chan* namec(char *pathname, int amode, int omode, ulong perm)
void cclose(Chan *c) |
DESCRIPTION
A value of type Chan represents a kernel channel for I/O and name
space operations. It has the following public structure:
Chanfree frees the channel structure c for reuse. Eqqid returns 1 if Qid values a and b are equal (ie, both their path and vers members are equal); it returns 0 otherwise. Eqchan returns 1 if a and b have the same qid, type and dev members (ie, they represent the same file); it returns 0 otherwise. If pathonly is non–zero, the comparison of the two qid members compares only their path values, ignoring the version field vers. Isdir checks that a given channel c is a directory. If so, it returns; otherwise, it generates an error(9), Enotdir. The Fgrp structure represents an array of open files, each represented by a Chan, indexed by integer file descriptors. A given Fgrp can be shared between processes. Fdtochan returns a pointer to the Chan corresponding to file descriptor fd in file descriptor group f (almost invariably up–>fgrp, the file descriptor group for the current process). If mode is a valid mode for open(2), typically OREAD, OWRITE or ORDWR, it must correspond to the mode with which fd was originally opened; if mode is –1, no check is made. If chkmnt is non–zero, c must not be a channel in use by the mount driver mnt(3). On successful return, if iref is non–zero, the channel's reference count has been incremented. Fdtochan calls error(9) if it detects invalid uses, in particular an invalid file descriptor fd.
Namec looks up a pathname in the current name space and returns
a channel. Amode determines the mode of look up, and must be one
of the constants below: If amode is Aopen or Acreate, omode should be a mode suitable for open(2); if Acreate, perm should be valid file permissions. In all other cases, omode and perm can be zero.
Cclose decrements the reference count on c; if no further references
remain, it calls the corresponding device's Dev.close to close
the channel, and frees c. |
SOURCE
/sys/src/9/port/chan.c |
DIAGNOSTICS
Most functions call error(9) on any sort of error. |
SEE ALSO
ref(9) |