• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/staging/tidspbridge/pmgr/

Lines Matching refs:zl_lib

137 static void dof_close(struct dbll_library_obj *zl_lib);
138 static int dof_open(struct dbll_library_obj *zl_lib);
201 void dbll_close(struct dbll_library_obj *zl_lib)
206 DBC_REQUIRE(zl_lib);
207 DBC_REQUIRE(zl_lib->open_ref > 0);
208 zl_target = zl_lib->target_obj;
209 zl_lib->open_ref--;
210 if (zl_lib->open_ref == 0) {
212 if (zl_target->head == zl_lib)
213 zl_target->head = zl_lib->next;
215 if (zl_lib->prev)
216 (zl_lib->prev)->next = zl_lib->next;
218 if (zl_lib->next)
219 (zl_lib->next)->prev = zl_lib->prev;
222 dof_close(zl_lib);
223 kfree(zl_lib->file_name);
226 if (zl_lib->sym_tab)
227 gh_delete(zl_lib->sym_tab);
230 kfree(zl_lib);
231 zl_lib = NULL;
300 bool dbll_get_addr(struct dbll_library_obj *zl_lib, char *name,
307 DBC_REQUIRE(zl_lib);
310 DBC_REQUIRE(zl_lib->sym_tab != NULL);
312 sym = (struct dbll_symbol *)gh_find(zl_lib->sym_tab, name);
319 __func__, zl_lib, name, sym_val, status);
344 bool dbll_get_c_addr(struct dbll_library_obj *zl_lib, char *name,
352 DBC_REQUIRE(zl_lib);
354 DBC_REQUIRE(zl_lib->sym_tab != NULL);
363 sym = (struct dbll_symbol *)gh_find(zl_lib->sym_tab, cname);
383 struct dbll_library_obj *zl_lib = (struct dbll_library_obj *)lib;
390 DBC_REQUIRE(zl_lib);
393 if (zl_lib != NULL) {
394 if (zl_lib->fp == NULL) {
395 status = dof_open(zl_lib);
400 (*(zl_lib->target_obj->attrs.fseek)) (zl_lib->fp,
401 zl_lib->ul_pos,
409 if (dload_get_section_info(zl_lib->desc, name, &sect)) {
423 dof_close(zl_lib);
454 struct dbll_library_obj *zl_lib = (struct dbll_library_obj *)lib;
461 DBC_REQUIRE(zl_lib);
468 if (zl_lib->load_ref == 0 || !(flags & DBLL_DYNAMIC)) {
469 dbzl = zl_lib->target_obj;
472 if (zl_lib->sym_tab == NULL) {
474 zl_lib->sym_tab = gh_create(MAXBUCKETS,
478 if (zl_lib->sym_tab == NULL)
486 zl_lib->stream.dl_stream.read_buffer = dbll_read_buffer;
487 zl_lib->stream.dl_stream.set_file_posn = dbll_set_file_posn;
488 zl_lib->stream.lib = zl_lib;
490 zl_lib->symbol.dl_symbol.find_matching_symbol =
493 zl_lib->symbol.dl_symbol.add_to_symbol_table =
496 zl_lib->symbol.dl_symbol.add_to_symbol_table =
499 zl_lib->symbol.dl_symbol.purge_symbol_table =
501 zl_lib->symbol.dl_symbol.dload_allocate = allocate;
502 zl_lib->symbol.dl_symbol.dload_deallocate = deallocate;
503 zl_lib->symbol.dl_symbol.error_report = dbll_err_report;
504 zl_lib->symbol.lib = zl_lib;
506 zl_lib->allocate.dl_alloc.dload_allocate = dbll_rmm_alloc;
507 zl_lib->allocate.dl_alloc.dload_deallocate = rmm_dealloc;
508 zl_lib->allocate.lib = zl_lib;
510 zl_lib->init.dl_init.connect = connect;
511 zl_lib->init.dl_init.readmem = read_mem;
512 zl_lib->init.dl_init.writemem = write_mem;
513 zl_lib->init.dl_init.fillmem = fill_mem;
514 zl_lib->init.dl_init.execute = execute;
515 zl_lib->init.dl_init.release = release;
516 zl_lib->init.lib = zl_lib;
518 if (zl_lib->fp == NULL) {
519 status = dof_open(zl_lib);
525 zl_lib->ul_pos = (*(zl_lib->target_obj->attrs.ftell))
526 (zl_lib->fp);
528 (*(zl_lib->target_obj->attrs.fseek)) (zl_lib->fp,
536 err = dynamic_load_module(&zl_lib->stream.dl_stream,
537 &zl_lib->symbol.dl_symbol,
538 &zl_lib->allocate.dl_alloc,
539 &zl_lib->init.dl_init,
541 &zl_lib->dload_mod_obj);
546 zl_lib->load_ref++;
547 dbll_unload(zl_lib, (struct dbll_attrs *)attrs);
551 *entry = zl_lib->entry;
556 zl_lib->load_ref++;
560 dof_close(zl_lib);
562 DBC_ENSURE(status || zl_lib->load_ref > 0);
574 int dbll_load_sect(struct dbll_library_obj *zl_lib, char *sec_name,
577 DBC_REQUIRE(zl_lib);
589 struct dbll_library_obj *zl_lib = NULL;
599 zl_lib = zl_target->head;
600 while (zl_lib != NULL) {
601 if (strcmp(zl_lib->file_name, file) == 0) {
603 zl_lib->open_ref++;
606 zl_lib = zl_lib->next;
608 if (zl_lib == NULL) {
610 zl_lib = kzalloc(sizeof(struct dbll_library_obj), GFP_KERNEL);
611 if (zl_lib == NULL) {
614 zl_lib->ul_pos = 0;
617 zl_lib->open_ref++;
618 zl_lib->target_obj = zl_target;
620 zl_lib->file_name = kzalloc(strlen(file) + 1,
622 if (zl_lib->file_name == NULL) {
625 strncpy(zl_lib->file_name, file,
628 zl_lib->sym_tab = NULL;
638 zl_lib->stream.dl_stream.read_buffer = dbll_read_buffer;
639 zl_lib->stream.dl_stream.set_file_posn = dbll_set_file_posn;
640 zl_lib->stream.lib = zl_lib;
642 zl_lib->symbol.dl_symbol.add_to_symbol_table = dbll_add_to_symbol_table;
643 zl_lib->symbol.dl_symbol.find_matching_symbol = dbll_find_symbol;
644 zl_lib->symbol.dl_symbol.purge_symbol_table = dbll_purge_symbol_table;
645 zl_lib->symbol.dl_symbol.dload_allocate = allocate;
646 zl_lib->symbol.dl_symbol.dload_deallocate = deallocate;
647 zl_lib->symbol.dl_symbol.error_report = dbll_err_report;
648 zl_lib->symbol.lib = zl_lib;
650 zl_lib->allocate.dl_alloc.dload_allocate = dbll_rmm_alloc;
651 zl_lib->allocate.dl_alloc.dload_deallocate = rmm_dealloc;
652 zl_lib->allocate.lib = zl_lib;
654 zl_lib->init.dl_init.connect = connect;
655 zl_lib->init.dl_init.readmem = read_mem;
656 zl_lib->init.dl_init.writemem = write_mem;
657 zl_lib->init.dl_init.fillmem = fill_mem;
658 zl_lib->init.dl_init.execute = execute;
659 zl_lib->init.dl_init.release = release;
660 zl_lib->init.lib = zl_lib;
661 if (!status && zl_lib->fp == NULL)
662 status = dof_open(zl_lib);
664 zl_lib->ul_pos = (*(zl_lib->target_obj->attrs.ftell)) (zl_lib->fp);
665 (*(zl_lib->target_obj->attrs.fseek)) (zl_lib->fp, (long)0, SEEK_SET);
667 if (zl_lib->sym_tab != NULL || !(flags & DBLL_SYMB))
670 zl_lib->sym_tab =
673 if (zl_lib->sym_tab == NULL) {
677 zl_lib->init.dl_init.writemem = no_op;
678 err = dynamic_open_module(&zl_lib->stream.dl_stream,
679 &zl_lib->symbol.dl_symbol,
680 &zl_lib->allocate.dl_alloc,
681 &zl_lib->init.dl_init, 0,
682 &zl_lib->dload_mod_obj);
687 err = dynamic_unload_module(zl_lib->dload_mod_obj,
688 &zl_lib->symbol.dl_symbol,
689 &zl_lib->allocate.dl_alloc,
690 &zl_lib->init.dl_init);
694 zl_lib->dload_mod_obj = NULL;
699 if (zl_lib->open_ref == 1) {
702 (zl_target->head)->prev = zl_lib;
704 zl_lib->prev = NULL;
705 zl_lib->next = zl_target->head;
706 zl_target->head = zl_lib;
708 *lib_obj = (struct dbll_library_obj *)zl_lib;
711 if (zl_lib != NULL)
712 dbll_close((struct dbll_library_obj *)zl_lib);
715 DBC_ENSURE((!status && (zl_lib->open_ref > 0) && *lib_obj)
731 struct dbll_library_obj *zl_lib = (struct dbll_library_obj *)lib;
739 DBC_REQUIRE(zl_lib);
745 if (zl_lib != NULL) {
746 if (zl_lib->fp == NULL) {
747 status = dof_open(zl_lib);
752 (*(zl_lib->target_obj->attrs.fseek)) (zl_lib->fp,
753 zl_lib->ul_pos,
763 if (!dload_get_section_info(zl_lib->desc, name, &sect)) {
781 if (!dload_get_section(zl_lib->desc, sect, buf))
787 dof_close(zl_lib);
817 struct dbll_library_obj *zl_lib = (struct dbll_library_obj *)lib;
821 DBC_REQUIRE(zl_lib);
822 DBC_REQUIRE(zl_lib->load_ref > 0);
824 zl_lib->load_ref--;
826 if (zl_lib->load_ref != 0)
829 zl_lib->target_obj->attrs = *attrs;
830 if (zl_lib->dload_mod_obj) {
831 err = dynamic_unload_module(zl_lib->dload_mod_obj,
832 &zl_lib->symbol.dl_symbol,
833 &zl_lib->allocate.dl_alloc,
834 &zl_lib->init.dl_init);
839 if (zl_lib->sym_tab != NULL) {
840 gh_delete(zl_lib->sym_tab);
841 zl_lib->sym_tab = NULL;
845 dof_close(zl_lib);
847 DBC_ENSURE(zl_lib->load_ref >= 0);
866 static void dof_close(struct dbll_library_obj *zl_lib)
868 if (zl_lib->desc) {
869 dload_module_close(zl_lib->desc);
870 zl_lib->desc = NULL;
873 if (zl_lib->fp) {
874 (zl_lib->target_obj->attrs.fclose) (zl_lib->fp);
875 zl_lib->fp = NULL;
882 static int dof_open(struct dbll_library_obj *zl_lib)
884 void *open = *(zl_lib->target_obj->attrs.fopen);
888 zl_lib->fp =
889 (void *)((dbll_f_open_fxn) (open)) (zl_lib->file_name, "rb");
892 if (zl_lib->fp && zl_lib->desc == NULL) {
893 (*(zl_lib->target_obj->attrs.fseek)) (zl_lib->fp, (long)0,
895 zl_lib->desc =
896 dload_module_open(&zl_lib->stream.dl_stream,
897 &zl_lib->symbol.dl_symbol);
898 if (zl_lib->desc == NULL) {
899 (zl_lib->target_obj->attrs.fclose) (zl_lib->fp);
900 zl_lib->fp = NULL;
1554 * @zl_lib: DSP binary obj library pointer
1562 bool dbll_find_dsp_symbol(struct dbll_library_obj *zl_lib, u32 address,
1575 gh_iterate(zl_lib->sym_tab, find_symbol_callback, &context);