Changeset 5347:1d76e45ebfd1 in roaraudio
- Timestamp:
- 12/10/11 01:34:28 (12 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroar/roardl.h
r5344 r5347 67 67 #define ROAR_DL_LIBNAME_VERSION 0 68 68 #define ROAR_DL_LIBINST_VERSION 1 69 #define ROAR_DL_LIBDEP_VERSION 0 69 70 70 71 #define ROAR_DL_PLUGIN(lib) struct roar_dl_libraryinst * \ … … 110 111 lib.global_data_init = &(init); \ 111 112 lib.global_data_pointer = (void*)&(ptr) 113 #define ROAR_DL_PLUGIN_REG_LIBDEP(deps) (((lib.libdep = deps) == NULL) ? \ 114 (ssize_t)-1 : \ 115 (ssize_t)(lib.libdep_len = sizeof(deps)/sizeof(struct roar_dl_librarydep))) 112 116 113 117 // meta data stuff: … … 199 203 }; 200 204 205 #define ROAR_DL_DEP(__flags,__name,__libname,__abiversion) \ 206 {.version = ROAR_DL_LIBDEP_VERSION, \ 207 .len = sizeof(struct roar_dl_librarydep), \ 208 .flags = __flags, \ 209 .name = __name, \ 210 .libname = __libname, \ 211 .abiversion = __abiversion} 212 201 213 struct roar_dl_libraryinst { 202 214 int version; -
libroar/roardl.c
r5344 r5347 391 391 return -1; 392 392 393 if ( (lib->libdep == NULL && lib->libdep_len) || (lib->libdep != NULL && !lib->libdep_len) ) { 394 roar_err_set(ROAR_ERROR_BADLIB); 395 return -1; 396 } 397 398 if ( lib->libdep != NULL && lib->libdep_len ) { 399 // dynamic loader infos are currently not supported. 400 roar_err_set(ROAR_ERROR_NOTSUP); 401 return -1; 402 } 403 393 404 if ( !((void*)lhandle < (void*)128) ) { 394 405 lhandle->lib = lib; -
roarclients/roarpluginrunner.c
r5346 r5347 94 94 struct roar_dl_libraryinst * (*func)(struct roar_dl_librarypara * para); 95 95 struct roar_dl_libraryinst * lib; 96 int libok = 0, libnameok = 0 ;96 int libok = 0, libnameok = 0, libdepok = 0; 97 97 int tmp; 98 98 int i; 99 size_t iter; 100 char c; 99 101 100 102 if ( lhandle == NULL ) … … 154 156 lib->libname->len == sizeof(*(lib->libname)) ? "" : "no "); 155 157 if ( libnameok ) { 156 #define _ps( c,name) \158 #define _ps(k,name) \ 157 159 tmp = (lib->libname->name) != NULL; \ 158 printf("| %c-> %-15s = %s%s%s\n", ( c), #name, tmp ? "\"" : "", \160 printf("| %c-> %-15s = %s%s%s\n", (k), #name, tmp ? "\"" : "", \ 159 161 tmp ? (lib->libname->name) : "<not set>", tmp ? "\"" : ""); 160 162 … … 173 175 printf("|-> global_data_init = %s\n", _ptrrange2str(lib->global_data_init, lib->global_data_len)); 174 176 printf("|-> global_data_pointer = %s\n", _ptr2str(lib->global_data_pointer)); 175 printf("|-> libdep = %s\n", _ptr2str(lib->libdep)); 176 printf("|-> libdep_len = %zu\n", lib->libdep_len); 177 if ( lib->libdep != NULL && lib->libdep_len ) { 178 printf("|-> libdep = %s\n", _ptr2str(lib->libdep)); 179 for (iter = 0; iter < lib->libdep_len; iter++) { 180 printf("| %c-> Table entry %zu = %p\n", iter == (lib->libdep_len-1) ? '\\' : '|', iter, &(lib->libdep[iter])); 181 c = iter == (lib->libdep_len-1) ? ' ' : '|'; 182 if ( lib->libdep[iter].version == ROAR_DL_LIBDEP_VERSION && 183 lib->libdep[iter].len == sizeof(struct roar_dl_librarydep) ) { 184 libdepok = 1; 185 } else { 186 libdepok = 0; 187 } 188 printf("| %c |-> version = %i (%smatch)\n", c, lib->libdep[iter].version, 189 lib->libdep[iter].version == ROAR_DL_LIBDEP_VERSION ? "" : "no "); 190 printf("| %c %c-> len = %zu (%smatch)\n", c, libdepok ? '|' : '\\', 191 lib->libdep[iter].len, 192 lib->libdep[iter].len == sizeof(struct roar_dl_librarydep) ? 193 "" : "no "); 194 if ( libdepok ) { 195 printf("| %c |-> flags = 0x%.8lX\n", c, (unsigned long int)lib->libdep[iter].flags); 196 #define _ps(k,name) \ 197 tmp = (lib->libdep[iter].name) != NULL; \ 198 printf("| %c %c-> %-11s = %s%s%s\n", c, (k), #name, tmp ? "\"" : "", \ 199 tmp ? (lib->libdep[iter].name) : "<not set>", tmp ? "\"" : ""); 200 _ps('|', name); 201 _ps('|', libname); 202 _ps('\\', abiversion); 203 #undef _ps 204 } 205 } 206 printf("|-> libdep_len = %zu\n", lib->libdep_len); 207 } else if ( (lib->libdep == NULL && lib->libdep_len) || (lib->libdep != NULL && !lib->libdep_len) ) { 208 printf("|-> libdep = %s (invalid)\n", _ptr2str(lib->libdep)); 209 printf("|-> libdep_len = %zu (invalid)\n", lib->libdep_len); 210 } 177 211 printf("\\-> appsched = %s\n", _ptr2str(lib->appsched)); 178 212 if ( lib->appsched != NULL ) {
Note: See TracChangeset
for help on using the changeset viewer.