obj: add read() and write() object callbacks

This commit is contained in:
2023-05-14 21:11:32 +01:00
parent 0238008986
commit d02d05d922
10 changed files with 91 additions and 28 deletions

View File

@@ -3,6 +3,7 @@
#include <socks/locks.h>
#include <socks/status.h>
#include <socks/flags.h>
#include <socks/vm.h>
#include <stddef.h>
@@ -30,6 +31,8 @@ enum object_type_flags {
struct object_ops {
kern_status_t(*open)(struct object *obj);
kern_status_t(*close)(struct object *obj);
kern_status_t(*read)(struct object *obj, void *p, size_t *r, socks_flags_t flags);
kern_status_t(*write)(struct object *obj, const void *p, size_t *w, socks_flags_t flags);
kern_status_t(*destroy)(struct object *obj);
kern_status_t(*query_name)(struct object *obj, char out[OBJECT_NAME_MAX]);
kern_status_t(*parse)(struct object *obj, const char *path, struct object **out);
@@ -85,6 +88,8 @@ static inline kern_status_t object_get(const char *path, struct object **out)
{
return object_namespace_get_object(global_namespace(), path, out);
}
extern kern_status_t object_read(struct object *obj, void *p, size_t max, size_t *nr_read, socks_flags_t flags);
extern kern_status_t object_write(struct object *obj, const void *p, size_t max, size_t *nr_written, socks_flags_t flags);
extern kern_status_t object_get_child_named(struct object *obj, const char *name, struct object **out);
extern kern_status_t object_get_child_at(struct object *obj, size_t at, struct object **out);
extern kern_status_t object_query_name(struct object *obj, char name[OBJECT_NAME_MAX]);