[Ksummit-discuss] [TECH TOPIC] Getting better/supplementary error info back to userspace
David Howells
dhowells at redhat.com
Wed Jul 12 14:57:56 UTC 2017
David Howells <dhowells at redhat.com> wrote:
> In which case, would it make sense to attach such a facility to the
> task_struct instead? I implemented a test of this using prctl, but a new
> syscall might be a better idea, at least for reading.
>
> (*) int old_setting = prctl(PR_ERRMSG_ENABLE, int setting);
>
> Enable (setting == 1) or disable (setting == 0) the facility.
> Disabling the facility clears the error buffer.
>
> (*) int size = prctl(PR_ERRMSG_READ, char *buffer, int buf_size);
>
> Read back a message and discard it.
I forgot to add that I've kept the in-kernel interface I have for this very
simple for the moment:
void errorf(const char *fmt, ...);
int invalf(const char *fmt, ...);
where these functions take printf-style arguments and where invalf() is the
same as errorf(), but returns -EINVAL for convenience. To take an example
from NFS:
- if (auth_info->flavor_len + 1 >= max_flavor_len) {
- dfprintk(MOUNT, "NFS: too many sec= flavors\n");
- return -EINVAL;
- }
+ if (auth_info->flavor_len + 1 >= max_flavor_len)
+ return invalf("NFS: too many sec= flavors");
David
More information about the Ksummit-discuss
mailing list