00001 /* $Id: dm_mem.h 31620 2008-05-14 13:33:50Z adam $ */ 00002 /*****************************************************************************/ 00011 /*****************************************************************************/ 00012 00013 /* (c) 2003 Technische Universitaet Dresden 00014 * This file is part of DROPS, which is distributed under the terms of the 00015 * GNU General Public License 2. Please see the COPYING file for details. 00016 */ 00017 00018 #ifndef _DM_MEM_DM_MEM_H 00019 #define _DM_MEM_DM_MEM_H 00020 00021 /* L4/L4Env includes */ 00022 #include <l4/sys/types.h> 00023 #include <l4/env/cdefs.h> 00024 #include <l4/l4rm/l4rm.h> /* we also use some L4RM constants */ 00025 #include <l4/dm_generic/dm_generic.h> 00026 00027 /* DMmem includes */ 00028 #include <l4/dm_mem/dm_mem-client.h> 00029 00030 /***************************************************************************** 00031 *** typedefs 00032 *****************************************************************************/ 00033 00038 typedef struct l4dm_mem_addr 00039 { 00040 l4_addr_t addr; 00041 l4_size_t size; 00042 } l4dm_mem_addr_t; 00043 00044 /***************************************************************************** 00045 *** prototypes 00046 *****************************************************************************/ 00047 00048 __BEGIN_DECLS; 00049 00050 /*****************************************************************************/ 00075 /*****************************************************************************/ 00076 L4_CV int 00077 l4dm_mem_open(l4_threadid_t dsm_id, l4_size_t size, l4_addr_t align, 00078 l4_uint32_t flags, const char * name, 00079 l4dm_dataspace_t * ds); 00080 00081 /*****************************************************************************/ 00095 /*****************************************************************************/ 00096 L4_CV int 00097 l4dm_mem_size(const l4dm_dataspace_t * ds, l4_size_t * size); 00098 00099 /*****************************************************************************/ 00120 /*****************************************************************************/ 00121 L4_CV int 00122 l4dm_mem_resize(const l4dm_dataspace_t * ds, l4_size_t new_size); 00123 00124 /*****************************************************************************/ 00143 /*****************************************************************************/ 00144 L4_CV int 00145 l4dm_mem_info(const l4dm_dataspace_t * ds, l4_size_t * size, 00146 l4_threadid_t *owner, char * name, l4_uint32_t *next_id); 00147 00148 /*****************************************************************************/ 00174 /*****************************************************************************/ 00175 L4_CV int 00176 l4dm_mem_ds_phys_addr(const l4dm_dataspace_t * ds, l4_offs_t offset, 00177 l4_size_t size, l4_addr_t * paddr, l4_size_t * psize); 00178 00179 /*****************************************************************************/ 00205 /*****************************************************************************/ 00206 L4_CV int 00207 l4dm_mem_phys_addr(const void * ptr, l4_size_t size, l4dm_mem_addr_t addrs[], 00208 int num, l4_size_t * psize); 00209 00210 /*****************************************************************************/ 00219 /*****************************************************************************/ 00220 L4_CV int 00221 l4dm_mem_ds_is_contiguous(const l4dm_dataspace_t * ds); 00222 00223 /*****************************************************************************/ 00242 /*****************************************************************************/ 00243 L4_CV int 00244 l4dm_mem_ds_lock(const l4dm_dataspace_t * ds, 00245 l4_offs_t offset, l4_size_t size); 00246 00247 /*****************************************************************************/ 00263 /*****************************************************************************/ 00264 L4_CV int 00265 l4dm_mem_ds_unlock(const l4dm_dataspace_t * ds, 00266 l4_offs_t offset, l4_size_t size); 00267 00268 /*****************************************************************************/ 00287 /*****************************************************************************/ 00288 L4_CV int 00289 l4dm_mem_lock(const void * ptr, l4_size_t size); 00290 00291 /*****************************************************************************/ 00307 /*****************************************************************************/ 00308 L4_CV int 00309 l4dm_mem_unlock(const void * ptr, l4_size_t size); 00310 00311 /*****************************************************************************/ 00334 /*****************************************************************************/ 00335 L4_CV void * 00336 l4dm_mem_allocate(l4_size_t size, l4_uint32_t flags); 00337 00338 /*****************************************************************************/ 00362 /*****************************************************************************/ 00363 L4_CV void * 00364 l4dm_mem_allocate_named(l4_size_t size, l4_uint32_t flags, const char * name); 00365 00366 /*****************************************************************************/ 00391 /*****************************************************************************/ 00392 L4_CV void * 00393 l4dm_mem_ds_allocate(l4_size_t size, l4_uint32_t flags, l4dm_dataspace_t * ds); 00394 00395 /*****************************************************************************/ 00421 /*****************************************************************************/ 00422 L4_CV void * 00423 l4dm_mem_ds_allocate_named(l4_size_t size, l4_uint32_t flags, 00424 const char * name, l4dm_dataspace_t * ds); 00425 00426 /*****************************************************************************/ 00453 /*****************************************************************************/ 00454 L4_CV void * 00455 l4dm_mem_ds_allocate_named_dsm(l4_size_t size, l4_uint32_t flags, 00456 const char * name, l4_threadid_t dsm_id, 00457 l4dm_dataspace_t * ds); 00458 00459 /*****************************************************************************/ 00468 /*****************************************************************************/ 00469 L4_CV void 00470 l4dm_mem_release(const void * ptr); 00471 00472 __END_DECLS; 00473 00474 #endif /* !_DM_MEM_DM_MEM_H */