ensure that the stored error message from the last error is not
accidentally erased if the current function doesn't generate an
error of its own. */
-#define MUTEX_LOCK() LT_STMT_START { \
- if (mutex_lock) (*mutex_lock)(); } LT_STMT_END
-#define MUTEX_UNLOCK() LT_STMT_START { \
- if (mutex_unlock) (*mutex_unlock)(); } LT_STMT_END
-#define MUTEX_SETERROR(errormsg) LT_STMT_START { \
- if (mutex_seterror) (*mutex_seterror) (errormsg); \
- else last_error = (errormsg); } LT_STMT_END
-#define MUTEX_GETERROR(errormsg) LT_STMT_START { \
- if (mutex_seterror) errormsg = (*mutex_geterror)(); \
- else (errormsg) = last_error; } LT_STMT_END
+#define LT_DLMUTEX_LOCK() LT_STMT_START { \
+ if (lt_dlmutex_lock_func) (*lt_dlmutex_lock_func)(); \
+ } LT_STMT_END
+#define LT_DLMUTEX_UNLOCK() LT_STMT_START { \
+ if (lt_dlmutex_unlock_func) (*lt_dlmutex_unlock_func)();\
+ } LT_STMT_END
+#define LT_DLMUTEX_SETERROR(errormsg) LT_STMT_START { \
+ if (lt_dlmutex_seterror_func) \
+ (*lt_dlmutex_seterror_func) (errormsg); \
+ else lt_dllast_error = (errormsg); } LT_STMT_END
+#define LT_DLMUTEX_GETERROR(errormsg) LT_STMT_START { \
+ if (lt_dlmutex_seterror_func) \
+ (errormsg) = (*lt_dlmutex_geterror_func) (); \
+ else (errormsg) = lt_dllast_error; } LT_STMT_END
/* The mutex functions stored here are global, and are necessarily the
same for all threads that wish to share access to libltdl. */
-static lt_dlmutex_lock *mutex_lock = 0;
-static lt_dlmutex_unlock *mutex_unlock = 0;
-static lt_dlmutex_seterror *mutex_seterror = 0;
-static lt_dlmutex_geterror *mutex_geterror = 0;
-static const char *last_error = 0;
+static lt_dlmutex_lock *lt_dlmutex_lock_func = 0;
+static lt_dlmutex_unlock *lt_dlmutex_unlock_func = 0;
+static lt_dlmutex_seterror *lt_dlmutex_seterror_func = 0;
+static lt_dlmutex_geterror *lt_dlmutex_geterror_func = 0;
+static const char *lt_dllast_error = 0;
/* Either set or reset the mutex functions. Either all the arguments must
int errors = 0;
/* Lock using the old lock() callback, if any. */
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
if ((lock && unlock && seterror && geterror)
|| !(lock || unlock || seterror || geterror))
{
- mutex_lock = lock;
- mutex_unlock = unlock;
- mutex_geterror = geterror;
+ lt_dlmutex_lock_func = lock;
+ lt_dlmutex_unlock_func = unlock;
+ lt_dlmutex_geterror_func = geterror;
}
else
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_MUTEX_ARGS));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_MUTEX_ARGS));
++errors;
}
int result = -1;
const char **temp = (const char **) 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
index = errorcount - LT_ERROR_MAX;
temp = LT_DLREALLOC (const char *, user_error_strings, 1 + index);
if (temp == 0)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
}
else
{
result = errorcount++;
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return result;
}
{
int errors = 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
if (index >= errorcount || index < 0)
{
/* Ack! Error setting the error message! */
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_ERRORCODE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_ERRORCODE));
++errors;
}
else if (index < LT_ERROR_MAX)
{
/* No error setting the error message! */
- MUTEX_SETERROR (lt_dlerror_strings[errorcount]);
+ LT_DLMUTEX_SETERROR (lt_dlerror_strings[errorcount]);
}
else
{
/* No error setting the error message! */
- MUTEX_SETERROR (user_error_strings[errorcount - LT_ERROR_MAX]);
+ LT_DLMUTEX_SETERROR (user_error_strings[errorcount - LT_ERROR_MAX]);
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
if (!module)
{
- MUTEX_SETERROR (DLERROR (CANNOT_OPEN));
+ LT_DLMUTEX_SETERROR (DLERROR (CANNOT_OPEN));
}
return module;
if (dlclose (module) != 0)
{
- MUTEX_SETERROR (DLERROR (CANNOT_CLOSE));
+ LT_DLMUTEX_SETERROR (DLERROR (CANNOT_CLOSE));
++errors;
}
if (!address)
{
- MUTEX_SETERROR (DLERROR (SYMBOL_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (DLERROR (SYMBOL_NOT_FOUND));
}
return address;
if (!module)
{
- MUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
}
}
if (module && (shl_unload ((shl_t) (module)) != 0))
{
- MUTEX_SETERROR (LT_DLSTRERROR (CANNOT_CLOSE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_CLOSE));
++errors;
}
/* sys_shl_open should never return a NULL module handle */
if (module == (lt_module) 0)
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
}
else if (!shl_findsym((shl_t*) &module, symbol, TYPE_UNDEFINED, &address))
{
if (!address)
{
- MUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
}
}
searchname = LT_DLMALLOC (char, 2+ LT_DLSTRLEN (filename));
if (!searchname)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
return 0;
}
strcpy (searchname, filename);
We check whether LoadLibrary is returning a handle to
an already loaded module, and simulate failure if we
find one. */
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
cur = handles;
while (cur)
{
cur = cur->next;
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
if (cur || !module)
{
- MUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
module = 0;
}
if (FreeLibrary(module) == 0)
{
- MUTEX_SETERROR (LT_DLSTRERROR (CANNOT_CLOSE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_CLOSE));
++errors;
}
if (!address)
{
- MUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
}
return address;
if (image <= 0)
{
- MUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
image = 0;
}
if (unload_add_on ((image_id) module) != B_OK)
{
- MUTEX_SETERROR (LT_DLSTRERROR (CANNOT_CLOSE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_CLOSE));
++errors;
}
if (get_image_symbol (image, symbol, B_SYMBOL_TYPE_ANY, address) != B_OK)
{
- MUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
address = 0;
}
if (!module)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
module = 0;
}
else if (dld_link (filename) != 0)
{
- MUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
LT_DLFREE (module);
module = 0;
}
if (dld_unlink_by_file ((char*)(module), 1) != 0)
{
- MUTEX_SETERROR (LT_DLSTRERROR (CANNOT_CLOSE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_CLOSE));
++errors;
}
else
if (!address)
{
- MUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
}
return address;
{
int errors = 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
preloaded_symbols = 0;
if (default_preloaded_symbols)
errors = lt_dlpreload (default_preloaded_symbols);
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
{
lt_dlsymlists_t *lists;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
lists = preloaded_symbols;
while (lists)
}
preloaded_symbols = 0;
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return 0;
}
lt_dlsymlists_t *lists;
int errors = 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
lists = preloaded_symbols;
while (lists)
}
else
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
++errors;
}
done:
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
lt_dlsymlists_t *lists;
lt_module module = (lt_module) 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
lists = preloaded_symbols;
if (!lists)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_SYMBOLS));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_SYMBOLS));
goto done;
}
lists = lists->next;
}
- MUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
done:
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return module;
}
++syms;
}
- MUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
return 0;
}
{
int errors = 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
/* Initialize only at first call. */
if (++initialized == 1)
if (presym_init (presym.dlloader_data))
{
- MUTEX_SETERROR (LT_DLSTRERROR (INIT_LOADER));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INIT_LOADER));
++errors;
}
else if (errors != 0)
{
- MUTEX_SETERROR (LT_DLSTRERROR (DLOPEN_NOT_SUPPORTED));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (DLOPEN_NOT_SUPPORTED));
++errors;
}
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
presym_free_symlists();
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
if (default_preloaded_symbols)
{
errors = lt_dlpreload (default_preloaded_symbols);
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
}
return errors;
lt_dlpreload_default (preloaded)
const lt_dlsymlist *preloaded;
{
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
default_preloaded_symbols = preloaded;
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return 0;
}
const char *errormsg;
int errors = 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
loader = loaders;
if (!initialized)
{
- MUTEX_SETERROR (LT_DLSTRERROR (SHUTDOWN));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (SHUTDOWN));
++errors;
goto done;
}
}
done:
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
const char *saved_error;
int errors = 0;
- MUTEX_GETERROR (saved_error);
- MUTEX_LOCK ();
+ LT_DLMUTEX_GETERROR (saved_error);
+ LT_DLMUTEX_LOCK ();
cur = handles;
loader = loaders;
cur->info.filename = strdup (filename);
if (!cur->info.filename)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
++errors;
goto done;
}
}
cur->loader = loader;
- last_error = saved_error;
+ lt_dllast_error = saved_error;
done:
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
if (!filename)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
return 1;
}
if (!filename)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
return 1;
}
int lenbase = LT_DLSTRLEN (base_name);
char *filename, *canonical, *next;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
if (!search_path || !*search_path)
{
- MUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
goto cleanup;
}
canonical = canonicalize_path (search_path);
if (!canonical)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
goto cleanup;
}
if (!filename)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
goto cleanup;
}
}
LT_DLFREE (canonical);
LT_DLFREE (filename);
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return result;
}
}
else
{
- MUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
}
return is_done;
}
++errors;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
save_search_path = strdup (user_search_path);
if (user_search_path && !save_search_path)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
goto cleanup;
}
LT_DLFREE (user_search_path);
user_search_path = save_search_path;
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
if (!depcount)
{
tmp = LT_DLMALLOC (char, end - str);
if (!tmp)
{
- last_error = LT_DLSTRERROR (NO_MEMORY);
+ lt_dllast_error = LT_DLSTRERROR (NO_MEMORY);
return 1;
}
const char *saved_error;
char *canonical = 0, *base_name = 0, *dir = 0, *name = 0;
- MUTEX_GETERROR (saved_error);
+ LT_DLMUTEX_GETERROR (saved_error);
/* dlopen self? */
if (!filename)
handle = (lt_dlhandle) LT_DLMALLOC (struct lt_dlhandle_struct, 1);
if (!handle)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
return 0;
}
canonical = canonicalize_path (filename);
if (!canonical)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
LT_DLFREE (handle);
return 0;
}
dir = LT_DLMALLOC (char, base_name - canonical + 1);
if (!dir)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
handle = 0;
goto cleanup;
}
name = LT_DLMALLOC (char, ext - base_name + 1);
if (!name)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
handle = 0;
goto cleanup;
}
}
if (!file)
{
- MUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
}
if (!file)
if (!line)
{
fclose (file);
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
handle = 0;
goto cleanup;
}
LT_DLFREE (handle);
if (!error)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
}
free_vars (dlname, old_name, libdir, deplibs);
handle = (lt_dlhandle) LT_DLMALLOC (struct lt_dlhandle_struct, 1);
if (!handle)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
/* handle is already set to 0 */
goto cleanup;
}
handle->info.name = name;
handle->next = handles;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
handles = handle;
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
name = 0; /* don't free this during `cleanup' */
}
- MUTEX_SETERROR (saved_error);
+ LT_DLMUTEX_SETERROR (saved_error);
cleanup:
LT_DLFREE (dir);
int len;
const char *saved_error;
- MUTEX_GETERROR (saved_error);
+ LT_DLMUTEX_GETERROR (saved_error);
if (!filename)
{
len = strlen (filename);
if (!len)
{
- MUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
return 0;
}
tmp = LT_DLMALLOC (char, len+4);
if (!tmp)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
return 0;
}
strcpy (tmp, filename);
handle = lt_dlopen (tmp);
if (handle)
{
- MUTEX_SETERROR (saved_error);
+ LT_DLMUTEX_SETERROR (saved_error);
LT_DLFREE (tmp);
return handle;
}
tmp = LT_DLMALLOC (char, len + strlen (shlib_ext) + 1);
if (!tmp)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
return 0;
}
strcpy (tmp, filename);
handle = lt_dlopen (tmp);
if (handle)
{
- MUTEX_SETERROR (saved_error);
+ LT_DLMUTEX_SETERROR (saved_error);
LT_DLFREE (tmp);
return handle;
}
return handle;
}
- MUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND));
LT_DLFREE (tmp);
return 0;
}
if (!dirp)
return 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
rewinddir (dirp);
while ((direntp = readdir (dirp)))
if (!filename)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
goto cleanup;
}
}
LT_DLFREE (filename);
closedir (dirp);
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return 0;
}
lt_dlhandle cur, last;
int errors = 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
/* check whether the handle is valid */
last = cur = handles;
if (!cur)
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
++errors;
goto done;
}
if (LT_DLIS_RESIDENT (handle))
{
- MUTEX_SETERROR (LT_DLSTRERROR (CLOSE_RESIDENT_MODULE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CLOSE_RESIDENT_MODULE));
++errors;
}
done:
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
if (!handle)
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
return 0;
}
if (!symbol)
{
- MUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
return 0;
}
if (!sym)
{
- MUTEX_SETERROR (LT_DLSTRERROR (BUFFER_OVERFLOW));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (BUFFER_OVERFLOW));
return 0;
}
{
const char *saved_error;
- MUTEX_GETERROR (saved_error);
+ LT_DLMUTEX_GETERROR (saved_error);
/* this is a libtool module */
if (handle->loader->sym_prefix)
}
return address;
}
- MUTEX_SETERROR (saved_error);
+ LT_DLMUTEX_SETERROR (saved_error);
}
/* otherwise try "symbol" */
{
const char *error;
- MUTEX_GETERROR (error);
- MUTEX_SETERROR (0);
+ LT_DLMUTEX_GETERROR (error);
+ LT_DLMUTEX_SETERROR (0);
return error;
}
return errors;
}
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
if (!user_search_path)
{
user_search_path = strdup (search_dir);
if (!user_search_path)
{
- last_error = LT_DLSTRERROR (NO_MEMORY);
+ lt_dllast_error = LT_DLSTRERROR (NO_MEMORY);
++errors;
}
}
if (!new_search_path)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
++errors;
}
else
LT_DLMEM_REASSIGN (user_search_path, new_search_path);
}
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
{
int errors = 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
LT_DLFREE (user_search_path);
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
if (!search_path || !strlen (search_path))
{
return errors;
}
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
user_search_path = strdup (search_path);
if (!user_search_path)
{
++errors;
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
{
const char *saved_path;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
saved_path = user_search_path;
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return saved_path;
}
if (!handle)
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
++errors;
}
else
{
if (!handle)
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
return -1;
}
{
if (!handle)
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_HANDLE));
return 0;
}
int errors = 0;
lt_dlhandle cur;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
cur = handles;
while (cur)
}
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
static int last_caller_id = -1;
int result;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
result = ++last_caller_id;
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return result;
}
/* This needs to be locked so that the caller data can be updated
simultaneously by different threads. */
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
if (handle->caller_data)
n_elements = N_ELEMENTS (handle->caller_data);
if (temp == 0)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
stale = (lt_ptr) 0;
goto done;
}
handle->caller_data[i].data = data;
done:
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return stale;
}
/* This needs to be locked so that the caller data isn't updated by
another thread part way through this function. */
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
if (handle->caller_data)
n_elements = N_ELEMENTS (handle->caller_data);
}
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return result;
}
|| (dlloader->module_close == 0)
|| (dlloader->find_sym == 0))
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER));
return 1;
}
node = LT_DLMALLOC (lt_dlloader, 1);
if (node == 0)
{
- MUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
return 1;
}
node->find_sym = dlloader->find_sym;
node->dlloader_data = dlloader->dlloader_data;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
if (!loaders)
{
/* If there are no loaders, NODE becomes the list! */
if (ptr->next != place)
{
- last_error = LT_DLSTRERROR (INVALID_LOADER);
+ lt_dllast_error = LT_DLSTRERROR (INVALID_LOADER);
++errors;
}
else
}
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
if (!place)
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER));
return 1;
}
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
/* Fail if there are any open modules which use this loader. */
for (handle = handles; handle; handle = handle->next)
{
if (handle->loader == place)
{
- MUTEX_SETERROR (LT_DLSTRERROR (REMOVE_LOADER));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (REMOVE_LOADER));
++errors;
goto done;
}
LT_DLFREE (place);
done:
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return errors;
}
{
lt_dlloader *next;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
next = place ? place->next : loaders;
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return next;
}
if (place)
{
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
name = place ? place->loader_name : 0;
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
}
else
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER));
}
return name;
if (place)
{
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
data = place ? &(place->dlloader_data) : 0;
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
}
else
{
- MUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER));
+ LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER));
}
return data;
{
lt_dlloader *place = 0;
- MUTEX_LOCK ();
+ LT_DLMUTEX_LOCK ();
for (place = loaders; place; place = place->next)
{
if (strcmp (place->loader_name, loader_name) == 0)
break;
}
}
- MUTEX_UNLOCK ();
+ LT_DLMUTEX_UNLOCK ();
return place;
}