64 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2016-2019 The University of Notre Dame This software is
 | |
|  * distributed under the GNU General Public License. See the file LICENSE
 | |
|  * for details.
 | |
|  */
 | |
| 
 | |
| #ifndef KOBJECT_H
 | |
| #define KOBJECT_H
 | |
| 
 | |
| #include "kernel/types.h"
 | |
| 
 | |
| #include "fs.h"
 | |
| #include "device.h"
 | |
| #include "window.h"
 | |
| #include "console.h"
 | |
| #include "pipe.h"
 | |
| #include "event.h"
 | |
| 
 | |
| struct kobject {
 | |
| 	union {
 | |
| 		struct device *device;
 | |
| 		struct fs_dirent *file;
 | |
| 		struct fs_dirent *dir;
 | |
| 		struct window *window;
 | |
| 		struct console *console;
 | |
| 		struct pipe *pipe;
 | |
| 	} data;
 | |
| 	kobject_type_t type;
 | |
| 	int refcount;
 | |
| 	int offset;
 | |
| 	char *tag;
 | |
| };
 | |
| 
 | |
| struct kobject *kobject_create_file(struct fs_dirent *f);
 | |
| struct kobject *kobject_create_dir(struct fs_dirent *d);
 | |
| struct kobject *kobject_create_device(struct device *d);
 | |
| struct kobject *kobject_create_window(struct window *g);
 | |
| struct kobject *kobject_create_console(struct console *c);
 | |
| struct kobject *kobject_create_pipe(struct pipe *p);
 | |
| struct kobject *kobject_create_event();
 | |
| 
 | |
| struct kobject *kobject_create_window_from_window( struct kobject *k, int x, int y, int w, int h );
 | |
| struct kobject *kobject_create_console_from_window( struct kobject *k );
 | |
| struct kobject *kobject_create_dir_from_dir( struct kobject *kobject, const char *name );
 | |
| struct kobject *kobject_create_file_from_dir( struct kobject *kobject, const char *name );
 | |
| 
 | |
| struct kobject *kobject_addref(struct kobject *k);
 | |
| 
 | |
| struct kobject * kobject_copy( struct kobject *ksrc );
 | |
| 
 | |
| int kobject_read(struct kobject *kobject, void *buffer, int size, kernel_io_flags_t flags );
 | |
| int kobject_lookup( struct kobject *kobject, const char *name, struct kobject **newobj );
 | |
| int kobject_write(struct kobject *kobject, void *buffer, int size, kernel_io_flags_t flags );
 | |
| int kobject_list( struct kobject *kobject, void *buffer, int size );
 | |
| int kobject_size(struct kobject *kobject, int *dimensions, int n);
 | |
| int kobject_remove( struct kobject *kobject, const char *name );
 | |
| int kobject_close(struct kobject *kobject);
 | |
| 
 | |
| int kobject_get_type(struct kobject *kobject);
 | |
| int kobject_set_tag(struct kobject *kobject, char *new_tag);
 | |
| int kobject_get_tag(struct kobject *kobject, char *buffer, int buffer_size);
 | |
| 
 | |
| #endif
 |