Named extended attributes are meta-data associated with vnodes representing files and directories. They exist as "name=value" pairs within a set of namespaces.
The extattr_get_file system call retrieves the value of the specified extended attribute into a buffer pointed to by data of size nbytes. The extattr_set_file system call sets the value of the specified extended attribute to the data described by data. The extattr_delete_file system call deletes the extended attribute specified. The extattr_list_file returns a list of attributes present in the requested namespace. Each list entry consists of a single byte containing the length of the attribute name, followed by the attribute name. The attribute name is not terminated by ASCII 0 (nul). The extattr_get_file, and extattr_list_file calls consume the data and nbytes arguments in the style of read(2); extattr_set_file consumes these arguments in the style of write(2).
If data is NULL in a call to extattr_get_file then the size of defined extended attribute data will be returned, rather than the quantity read, permitting applications to test the size of the data without performing a read. The extattr_delete_link, extattr_get_link, and extattr_set_link system calls behave in the same way as their _file counterparts, except that they do not follow symlinks.
The extattr_get_fd, extattr_set_fd, and extattr_delete_fd calls are identical to their "_file" counterparts except for the first argument. The "_fd" functions take a file descriptor, while the "_file" functions take a path. Both arguments describe a file associated with the extended attribute that should be manipulated.
The following arguments are common to all the system calls described here: