/seL4-refos-master/projects/refos/impl/apps/process_server/src/system/memserv/ |
H A D | dataspace.c | 13 #include "dataspace.h" 20 @brief Process Server anon RAM dataspace implementation. */ 24 /* --------------------------- RAM dataspace OAT callback functions ----------------------------- */ 29 in order to create dataspace objects. Here we malloc some memory for the structure, initialise 30 its data structures, initialise its page array, and mint the dataspace badge capability. 32 @param oat The parent dataspace list (struct ram_dspace_list*). 33 @param id The dataspace ID allocated by the OAT table. 34 @param arg Arg[0] is the dataspace size, the rest unused. 35 @return A new dataspace (struct ram_dspace *) on success, NULL on error. (Transfers ownership) 67 /* Mint the badged capability representing this ram dataspace 269 ram_dspace_check_page(struct ram_dspace *dataspace, uint32_t offset) argument 281 ram_dspace_get_page(struct ram_dspace *dataspace, uint32_t offset) argument 334 ram_dspace_get_size(struct ram_dspace *dataspace) argument 341 ram_dspace_expand(struct ram_dspace *dataspace, uint32_t size) argument 385 ram_dspace_set_to_paddr(struct ram_dspace *dataspace, uint32_t paddr) argument 440 ram_dspace_read_page(char *buf, size_t len, struct ram_dspace *dataspace, uint32_t offset) argument 471 ram_dspace_write_page(char *buf, size_t len, struct ram_dspace *dataspace, uint32_t offset) argument 487 ram_dspace_read(char *buf, size_t len, struct ram_dspace *dataspace, uint32_t offset) argument 518 ram_dspace_write(char *buf, size_t len, struct ram_dspace *dataspace, uint32_t offset) argument 552 ram_dspace_content_init(struct ram_dspace *dataspace, cspacepath_t initEP, uint32_t initPID) argument 617 ram_dspace_need_content_init(struct ram_dspace *dataspace, uint32_t offset) argument 637 ram_dspace_add_content_init_waiter(struct ram_dspace *dataspace, uint32_t offset, cspacepath_t reply) argument 671 ram_dspace_add_content_init_waiter_save_current_caller(struct ram_dspace *dataspace, uint32_t offset) argument 696 ram_dspace_content_init_reply_waiters(struct ram_dspace *dataspace, uint32_t offset) argument 736 ram_dspace_set_content_init_provided(struct ram_dspace *dataspace, uint32_t offset) argument [all...] |
H A D | dataspace.h | 14 @brief Process Server anon RAM dataspace implementation. 16 A dataspace implementation which is backed by physical RAM. Provides methods for creating & 40 /*! @brief Ram dataspace structure 42 A single ram dataspace backed by physical kernel pages. This structure assumes ownership of its 66 /*! Weak reference to this dataspace's parent. */ 70 /*! @brief Ram dataspace list. */ 76 /*! @brief Ram dataspace content init waiter structure */ 83 /* ------------------------------- RAM dataspace table functions -------------------------------- */ 85 /*! @brief Initialises an empty ram dataspace list. */ 88 /*! @brief De-initialises an empty ram dataspace lis [all...] |
H A D | ringbuffer.c | 15 #include "dataspace.h" 20 @brief Ring buffer implementation, operating on the internal RAM dataspace objects. */ 27 assert(buf && buf->dataspace); 31 ((char*) &buf->localStart), sizeof(uint32_t), buf->dataspace, 0 36 ((char*) &buf->localStart), sizeof(uint32_t), buf->dataspace, 0 46 assert(buf && buf->dataspace); 50 ((char*) &buf->localEnd), sizeof(uint32_t), buf->dataspace, sizeof(uint32_t) 55 ((char*) &buf->localEnd), sizeof(uint32_t), buf->dataspace, sizeof(uint32_t) 73 rb_create(struct ram_dspace *dataspace, enum rb_mode mode) argument 75 assert(dataspace [all...] |
H A D | ringbuffer.h | 14 @brief Ring buffer implementation, operating on the internal RAM dataspace objects. 17 is designed for communication with the clients who share to us our own dataspace. Since reading 33 #include "dataspace.h" 47 the associated dataspace; merely provides a wrapping to use ringbuffers on top of a struct 51 The structure also shares ownership of the underlying dataspace object, using a shared 54 object "hangs onto" its dataspace. 64 struct ram_dspace *dataspace; /* Shared ownership. */ member in struct:rb_buffer 67 /*! @brief Creates a ring buffer structure operating on the given dataspace. 69 Creates a ring buffer structure operating on the given dataspace. This assumes a shared 70 ownership of the given dataspace, an [all...] |
/seL4-refos-master/apps/process_server/src/system/memserv/ |
H A D | dataspace.c | 13 #include "dataspace.h" 20 @brief Process Server anon RAM dataspace implementation. */ 24 /* --------------------------- RAM dataspace OAT callback functions ----------------------------- */ 29 in order to create dataspace objects. Here we malloc some memory for the structure, initialise 30 its data structures, initialise its page array, and mint the dataspace badge capability. 32 @param oat The parent dataspace list (struct ram_dspace_list*). 33 @param id The dataspace ID allocated by the OAT table. 34 @param arg Arg[0] is the dataspace size, the rest unused. 35 @return A new dataspace (struct ram_dspace *) on success, NULL on error. (Transfers ownership) 67 /* Mint the badged capability representing this ram dataspace 269 ram_dspace_check_page(struct ram_dspace *dataspace, uint32_t offset) argument 281 ram_dspace_get_page(struct ram_dspace *dataspace, uint32_t offset) argument 334 ram_dspace_get_size(struct ram_dspace *dataspace) argument 341 ram_dspace_expand(struct ram_dspace *dataspace, uint32_t size) argument 385 ram_dspace_set_to_paddr(struct ram_dspace *dataspace, uint32_t paddr) argument 440 ram_dspace_read_page(char *buf, size_t len, struct ram_dspace *dataspace, uint32_t offset) argument 471 ram_dspace_write_page(char *buf, size_t len, struct ram_dspace *dataspace, uint32_t offset) argument 487 ram_dspace_read(char *buf, size_t len, struct ram_dspace *dataspace, uint32_t offset) argument 518 ram_dspace_write(char *buf, size_t len, struct ram_dspace *dataspace, uint32_t offset) argument 552 ram_dspace_content_init(struct ram_dspace *dataspace, cspacepath_t initEP, uint32_t initPID) argument 617 ram_dspace_need_content_init(struct ram_dspace *dataspace, uint32_t offset) argument 637 ram_dspace_add_content_init_waiter(struct ram_dspace *dataspace, uint32_t offset, cspacepath_t reply) argument 671 ram_dspace_add_content_init_waiter_save_current_caller(struct ram_dspace *dataspace, uint32_t offset) argument 696 ram_dspace_content_init_reply_waiters(struct ram_dspace *dataspace, uint32_t offset) argument 736 ram_dspace_set_content_init_provided(struct ram_dspace *dataspace, uint32_t offset) argument [all...] |
H A D | dataspace.h | 14 @brief Process Server anon RAM dataspace implementation. 16 A dataspace implementation which is backed by physical RAM. Provides methods for creating & 40 /*! @brief Ram dataspace structure 42 A single ram dataspace backed by physical kernel pages. This structure assumes ownership of its 66 /*! Weak reference to this dataspace's parent. */ 70 /*! @brief Ram dataspace list. */ 76 /*! @brief Ram dataspace content init waiter structure */ 83 /* ------------------------------- RAM dataspace table functions -------------------------------- */ 85 /*! @brief Initialises an empty ram dataspace list. */ 88 /*! @brief De-initialises an empty ram dataspace lis [all...] |
H A D | ringbuffer.c | 15 #include "dataspace.h" 20 @brief Ring buffer implementation, operating on the internal RAM dataspace objects. */ 27 assert(buf && buf->dataspace); 31 ((char*) &buf->localStart), sizeof(uint32_t), buf->dataspace, 0 36 ((char*) &buf->localStart), sizeof(uint32_t), buf->dataspace, 0 46 assert(buf && buf->dataspace); 50 ((char*) &buf->localEnd), sizeof(uint32_t), buf->dataspace, sizeof(uint32_t) 55 ((char*) &buf->localEnd), sizeof(uint32_t), buf->dataspace, sizeof(uint32_t) 73 rb_create(struct ram_dspace *dataspace, enum rb_mode mode) argument 75 assert(dataspace [all...] |
H A D | ringbuffer.h | 14 @brief Ring buffer implementation, operating on the internal RAM dataspace objects. 17 is designed for communication with the clients who share to us our own dataspace. Since reading 33 #include "dataspace.h" 47 the associated dataspace; merely provides a wrapping to use ringbuffers on top of a struct 51 The structure also shares ownership of the underlying dataspace object, using a shared 54 object "hangs onto" its dataspace. 64 struct ram_dspace *dataspace; /* Shared ownership. */ member in struct:rb_buffer 67 /*! @brief Creates a ring buffer structure operating on the given dataspace. 69 Creates a ring buffer structure operating on the given dataspace. This assumes a shared 70 ownership of the given dataspace, an [all...] |
/seL4-refos-master/libs/librefos/include/refos-rpc/ |
H A D | data_client_helper.h | 30 This file contains a simple layer of helper functions that make using the dataspace interface 34 /*! @brief Set the data_open() to paddr mode, for dataservers which support opening a dataspace at a 40 /*! @brief Structure containing state for a mapped dataspace. */ 43 seL4_CPtr dataspace; /* Has ownership. */ member in struct:data_mapping 55 /*! @brief Helper function to open a dataspace, allocate a window to map into, then map it there. 56 @param session The client connection session to the dataspace server. (No ownership) 57 @param name The name of the dataspace server. 61 @param dspaceSize The size of dataspace to open. Note that some data servers may ignore this. 89 /* Open the dataspace. */ 91 /* Default dataspace siz [all...] |
/seL4-refos-master/projects/refos/impl/libs/librefos/include/refos-rpc/ |
H A D | data_client_helper.h | 30 This file contains a simple layer of helper functions that make using the dataspace interface 34 /*! @brief Set the data_open() to paddr mode, for dataservers which support opening a dataspace at a 40 /*! @brief Structure containing state for a mapped dataspace. */ 43 seL4_CPtr dataspace; /* Has ownership. */ member in struct:data_mapping 55 /*! @brief Helper function to open a dataspace, allocate a window to map into, then map it there. 56 @param session The client connection session to the dataspace server. (No ownership) 57 @param name The name of the dataspace server. 61 @param dspaceSize The size of dataspace to open. Note that some data servers may ignore this. 89 /* Open the dataspace. */ 91 /* Default dataspace siz [all...] |
/seL4-refos-master/projects/refos/impl/apps/file_server/src/ |
H A D | pager.c | 16 Creates big anon RAM dataspace and uses it to manage allocation/deallocation of the frames of 17 the RAM dataspace to be used for paging clients. The frame block works by using a frame pool 18 (cpool_t structure), with the big dataspace mapped into a window. We then call data_datamap 53 /* Initialise the anonymouse RAM dataspace to allocate from. */ 56 fb->dataspace = data_open(REFOS_PROCSERV_EP, "anon", O_CREAT | O_WRONLY |O_TRUNC, O_RDWR, 58 if (error != ESUCCESS || !fb->dataspace) { 59 ROS_ERROR("page_init failed to open anon dataspace."); 60 assert(!"page_init failed to open anon dataspace."); 75 /* Map the dataspace into the window. */ 77 error = data_datamap(REFOS_PROCSERV_EP, fb->dataspace, f [all...] |
H A D | pager.h | 34 seL4_CPtr dataspace; member in struct:fs_frame_block
|
/seL4-refos-master/apps/file_server/src/ |
H A D | pager.c | 16 Creates big anon RAM dataspace and uses it to manage allocation/deallocation of the frames of 17 the RAM dataspace to be used for paging clients. The frame block works by using a frame pool 18 (cpool_t structure), with the big dataspace mapped into a window. We then call data_datamap 53 /* Initialise the anonymouse RAM dataspace to allocate from. */ 56 fb->dataspace = data_open(REFOS_PROCSERV_EP, "anon", O_CREAT | O_WRONLY |O_TRUNC, O_RDWR, 58 if (error != ESUCCESS || !fb->dataspace) { 59 ROS_ERROR("page_init failed to open anon dataspace."); 60 assert(!"page_init failed to open anon dataspace."); 75 /* Map the dataspace into the window. */ 77 error = data_datamap(REFOS_PROCSERV_EP, fb->dataspace, f [all...] |
H A D | pager.h | 34 seL4_CPtr dataspace; member in struct:fs_frame_block
|
/seL4-refos-master/projects/refos/impl/apps/test_os/src/ |
H A D | test_anon_ram.c | 27 test_start("anon dataspace"); 29 /* Open an anonymous dataspace and map it entirely in our VSpace. */ 35 test_assert(anon.dataspace != 0); 39 /* Write to and read from anon dataspace. */ 42 tvprintf("anon dataspace contents: [%s]\n", anon.vaddr); 46 int error = data_expand(REFOS_PROCSERV_EP, anon.dataspace, 0x3000); 48 test_assert(data_get_size(REFOS_PROCSERV_EP, anon.dataspace) == 0x3000);
|
/seL4-refos-master/apps/test_os/src/ |
H A D | test_anon_ram.c | 27 test_start("anon dataspace"); 29 /* Open an anonymous dataspace and map it entirely in our VSpace. */ 35 test_assert(anon.dataspace != 0); 39 /* Write to and read from anon dataspace. */ 42 tvprintf("anon dataspace contents: [%s]\n", anon.vaddr); 46 int error = data_expand(REFOS_PROCSERV_EP, anon.dataspace, 0x3000); 48 test_assert(data_get_size(REFOS_PROCSERV_EP, anon.dataspace) == 0x3000);
|
/seL4-refos-master/projects/refos/design/ |
H A D | protocol.tex | 82 \autoref{f:openclose} shows how a client opens a dataspace which could subsequently be used for mapping in a window. This example also shows how a dataspace is closed. 94 D box D [label = "handle request, create dataspace"]; 96 C box C [label="read/write/share/use dataspace"]; 102 \caption{Sample protocol for opening and closing a dataspace} 109 \autoref{f:opendata} shows mapping an open dataspace into a given memory window. The initialisation sets up the components for sample fault delegation in the system. Note that the process server is acting as the memory manager. The paging could instead be implemented through a separate memory manager process. 121 C abox P [ label = "Create a dataspace" ]; 133 \caption{Sample protocol for mapping a dataspace into a given window} 139 \autoref{f:pagefault} shows the page fault resolution protocol in the case of an external dataspace server backing a window in the client's address space. In \refOS, the \seLf microkernel sends the page fault notification to an endpoint capability pretending to be the faulting process. 152 C box C [label = "VM fault into mapped dataspace"]; [all...] |
H A D | interface.tex | 20 Servers implement interfaces which provide management (creation, destruction, monitoring, sharing and manipulation) of objects. For example, an audio device may implement the dataspace interface for UNIX \texttt{/dev/audio} which gives the abstraction to manage audio objects. 36 \item[\obj{dataspace}] is an object that represents a dataspace. The dataspace itself may represent anything that may be modeled as a series of bytes including devices, RAM and files. If something has access to a dataspace object, it may read from the dataspace object, write to the dataspace object and execute the dataspace object by mapping a memory window to the dataspace, closing the dataspace, o [all...] |
/seL4-refos-master/libs/librefos/include/refos-util/ |
H A D | init.h | 40 /*! @brief Self-loader dataspace mapping struct. */ 42 seL4_CPtr dataspace; member in struct:sl_dataspace_s 79 down before proper parameter sharing using a shared dataspace has been set up.
|
/seL4-refos-master/projects/refos/impl/libs/librefos/include/refos-util/ |
H A D | init.h | 40 /*! @brief Self-loader dataspace mapping struct. */ 42 seL4_CPtr dataspace; member in struct:sl_dataspace_s 79 down before proper parameter sharing using a shared dataspace has been set up.
|
/seL4-refos-master/libs/librefossys/src/refos-io/ |
H A D | mmap_segment.c | 64 /* Create the dataspace. */ 65 seL4_CPtr dataspace = data_open(REFOS_PROCSERV_EP, "anon", 0, 0, local 73 /* Map the segment dataspace into the window. */ 74 error = data_datamap(REFOS_PROCSERV_EP, dataspace, window, 0); 83 csfree_delete(dataspace); 89 data_close(REFOS_PROCSERV_EP, dataspace); 90 csfree_delete(dataspace); 127 /* Get the associated dataspace and release it. */ 131 seL4_DebugPrintf("mmap_segment_fill: Failed to get window dataspace, error occued.\n"); 137 seL4_DebugPrintf("mmap_segment_fill: Failed delete dataspace [all...] |
/seL4-refos-master/projects/refos/impl/libs/librefossys/src/refos-io/ |
H A D | mmap_segment.c | 64 /* Create the dataspace. */ 65 seL4_CPtr dataspace = data_open(REFOS_PROCSERV_EP, "anon", 0, 0, local 73 /* Map the segment dataspace into the window. */ 74 error = data_datamap(REFOS_PROCSERV_EP, dataspace, window, 0); 83 csfree_delete(dataspace); 89 data_close(REFOS_PROCSERV_EP, dataspace); 90 csfree_delete(dataspace); 127 /* Get the associated dataspace and release it. */ 131 seL4_DebugPrintf("mmap_segment_fill: Failed to get window dataspace, error occued.\n"); 137 seL4_DebugPrintf("mmap_segment_fill: Failed delete dataspace [all...] |
/seL4-refos-master/projects/refos/impl/apps/selfloader/src/ |
H A D | selfloader.c | 64 /*! @brief Open the ELF header dataspace, and map it so we can read it. 65 @param fsSession Resolved mount point and session of ELF header dataspace. 87 /*! @brief Helper function to map out a zero vspace segment. Simply opens an anonymous dataspace 90 @param size The size of the zero segment dataspace. 92 dataspace region, due to page alignment. 93 @param out[out] Optional output struct to store windows & dataspace capabilities. If this is 94 set to NULL, the created window and dataspace caps are simply used then 107 assert(!elfSegment->dataspace); 112 /* Open a anon ram dataspace on procserv. */ 113 dvprintf(" Creating zero segment dataspace [all...] |
/seL4-refos-master/apps/selfloader/src/ |
H A D | selfloader.c | 64 /*! @brief Open the ELF header dataspace, and map it so we can read it. 65 @param fsSession Resolved mount point and session of ELF header dataspace. 87 /*! @brief Helper function to map out a zero vspace segment. Simply opens an anonymous dataspace 90 @param size The size of the zero segment dataspace. 92 dataspace region, due to page alignment. 93 @param out[out] Optional output struct to store windows & dataspace capabilities. If this is 94 set to NULL, the created window and dataspace caps are simply used then 107 assert(!elfSegment->dataspace); 112 /* Open a anon ram dataspace on procserv. */ 113 dvprintf(" Creating zero segment dataspace [all...] |
/seL4-refos-master/projects/refos/impl/apps/process_server/src/test/ |
H A D | test_memserv.c | 21 #include "../system/memserv/dataspace.h" 146 /* --------------------------------- RAM dataspace module test ---------------------------------- */ 151 test_start("ram dataspace list"); 164 tvprintf(" Creating dataspace %d (size %d)...\n", i, rsz[i]); 173 tvprintf("Testing dataspace get...\n"); 212 /* Create new dataspace should assign new ID. */ 213 tvprintf("Testing new dataspace creation to assign new ID...\n"); 229 int ram_dspace_read_page(char *buf, size_t len, struct ram_dspace *dataspace, uint32_t offset); 230 int ram_dspace_write_page(char *buf, size_t len, struct ram_dspace *dataspace, uint32_t offset); 245 int (*dsRead)(char *buf, size_t len, struct ram_dspace *dataspace, uint32_ [all...] |