summaryrefslogtreecommitdiff
path: root/include/asterisk/utils.h
AgeCommit message (Collapse)Author
2006-11-26- Add some comments on thread storage with a brief explanation of what it isRussell Bryant
as well as what the motivation is for using it. - Add a comment by the declaration of ast_inet_ntoa() noting that this function is not reentrant, and the result of a previous call to the function is no longer valid after calling it again. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48019 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-10-12Merged revisions 44956 via svnmerge from Kevin P. Fleming
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r44956 | kpfleming | 2006-10-12 13:38:51 -0500 (Thu, 12 Oct 2006) | 10 lines Merged revisions 44955 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r44955 | kpfleming | 2006-10-12 13:31:26 -0500 (Thu, 12 Oct 2006) | 2 lines ensure that IAX2 and SIP sockets allow UDP fragmentation when running on Linux (thanks to Brian Candler on the asterisk-dev list for the tip) ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44957 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-10-04Merged revisions 44378 via svnmerge from Kevin P. Fleming
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r44378 | kpfleming | 2006-10-04 14:47:22 -0500 (Wed, 04 Oct 2006) | 4 lines update thread creation code a bit reduce standard thread stack size slightly to allow the pthreads library to allocate the stack+data and not overflow a power-of-2 allocation in the kernel and waste memory/address space add a new stack size for 'background' threads (those that don't handle PBX calls) when LOW_MEMORY is defined ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-15Many Solaris fixes - this moves some of the stuff from utils.c to strcompat.cJason Parker
Every OS uses strcompat now - this was done on purpose. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@42982 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-22Sorry, but this does not resemble malloc... so GCC was ignoring the ↵Joshua Colp
attribute and throwing a warning. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40815 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-21use new configure-provided wrappers for attributesKevin P. Fleming
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40785 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-21- use a common error message in all of the memory allocation macrosRussell Bryant
- add ast_asprintf() and ast_vasprintf() - tweak doxygen comments - simplify the definition of a flag macro git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40775 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-21merge new_loader_completion branch, including (at least):Kevin P. Fleming
- restructured build tree and makefiles to eliminate recursion problems - support for embedded modules - support for static builds - simpler cross-compilation support - simpler module/loader interface (no exported symbols) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40722 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-08Merge team/russell/ast_verbose_threadstorageRussell Bryant
- instead of defining a free() wrapper in a bunch of files, define it as ast_free() in utils.h and remove the copies from all the files. - centralize and abstract the code used for doing thread storage. The code lives in threadstorage.h, with one function being implemented in utils.c. This new API includes generic thread storage as well as special functions for handling thread local dynamic length string buffers. - update ast_inet_ntoa() to use the new threadstorage API - update ast_state2str() to use the new threadstorage API - update ast_cli() to use the new threadstorage API - Modify manager_event() to use thread storage. Instead of using a buffer of 4096 characters as the workspace for building the manager event, use a thread local dynamic string. Now there is no length limitation on the length of the body of a manager event. - Significantly simplify the handling of ast_verbose() ... - Instead of using a static char buffer and a lock to make sure only one thread can be using ast_verbose() at a time, use a thread local dynamic string as the workspace for preparing the verbose message. Instead of locking around the entire function, the only locking done now is when the message has been built and is being deliviered to the list of registered verbose message handlers. - This function was doing a strdup() on every message passed to it and keeping a queue of the last 200 messages in memory. This has been completely removed. The only place this was used was that if there were any messages in the verbose queue when a verbose handler was registered, all of the messages in the queue would be fed to it. So, I just made sure that the console verbose handler and the network verbose handler (for remote asterisk consoles) were registered before any verbose messages. pbx_gtkconsole and pbx_kdeconsole will now lose a few verbose messages at startup, but I didn't feel the performance hit of this message queue was worth saving the initial verbose output for these very rarely used modules. - I have removed the last three arguments to the verbose handlers, leaving only the string itself because they aren't needed anymore. For example, ast_verbose had some logic for telling the verbose handler to add a newline if the buffer was completely full. Now that the buffer can grow as needed, this doesn't matter anymore. - remove unused function, ast_verbose_dmesg() which was to dispatch the message queue - Convert the list of verbose handlers to use the linked list macros. - add missing newline characters to a few ast_verbose() calls - convert the list of log channels to use the linked list macros in logger.c - fix close_logger() to close all of the files it opened for logging - update ast_log() to use a thread local dynamic string for its workspace for preparing log messages instead of a buffer of size BUFSIZ (8kB on my system) allocated on the stack. The dynamic string in this case is limited to only growing to a maximum size of BUFSIZ. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@39272 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-07-21Merge a new implementation of ast_inet_ntoa, our thread safe replacement forRussell Bryant
inet_ntoa, which uses thread specific data (aka thread local storage) instead of stack allocatted buffers to store the result. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@38042 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-06-01changes for base64 to work in multiline instancesMatt O'Gorman
as well as being more efficient, patch from jcollie's base64 branch git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@31492 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-10remove almost all of the checks of the result from ast_strdupa() or alloca().Russell Bryant
As it turns out, all of these checks were useless, because alloca will never return NULL. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@26451 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-10Allow media to go directly between IAX endpoints while signalling still Mark Spencer
goes through the existing path. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@26314 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-05move ast_carefulwrite from manager.c to utils.c so that cli.c andRussell Bryant
res_agi.c no longer depend on manager.h (issue #6397, casper) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@25026 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-19add the malloc attribute to the memory allocation wrappersRussell Bryant
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@21681 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-12add 'show threads' and 'show profile' commands.Luigi Rizzo
These are momstly debugging tools for developers, a bit documented in the header files (utils.h), although more documentation is definitely necessary. The performance impact is close to zero(*) so there is no need to compile it conditionally. (*) not completely true - thread destruction still needs to search a list _but_ this can be easily optimized if we end up with hundreds of active threads (in which case, though, the problem is clearly elsewhere). git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@19544 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-19When astmm is in use, define ast_malloc and friends to malloc, etc., so thatRussell Bryant
it doesn't report that all allocations are coming from utils.h. Also, add some more information to the error message astmm reports when a memory allocation failure occurs. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@13513 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-24Reverting revision 10998 that was accidentaly committed to trunk. My apologies.Olle Johansson
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@10989 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-24Update to trunkOlle Johansson
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@10988 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-03Bug 6322 - Implementation of SHA1 in Asterisk (plus dialplan function to use it)Tilghman Lesher
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@9138 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-21don't do the memcpy inside of ast_strdupa if we know that __builtin_alloca Russell Bryant
was not successful git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8393 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-21remove optimization where its benefits are negligibleRussell Bryant
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8368 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-20- move ast_strdupa from channel.h to utils.hRussell Bryant
- attempt to log an error message if the __builtin_alloca inside of ast_strdupa fails. - document the fact that it is known and intended behavior for ast_strdupa to cause Asterisk to crash if the alloca fails - use __builtin_expect when checking for allocation failure in all of the allocation wrappers New Janitor Project! Anywhere that we check for a successful allocation after a call to ast_strdupa is unnecessary and should be removed. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8356 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-13Various cleanups from comments in an email from Luigi Rizzo. Thank you!Russell Bryant
- Use a cleaner syntax for declaring the allocation macros - Fix return value for ast_strdup/ast_strndup - remove safe_strdup from app_macro, since ast_strup does the same thing - fix a place in app_queue where ast_calloc+strncpy was used instead of ast_strdup. If you are helping out with these conversions, please watch out for other places where this is done. - add a note to the coding guidelines about the fix to app_queue git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8065 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-10Add wrappers for commonly used memory allocation functions. These wrappersRussell Bryant
add an automatically generated Asterisk log message if the allocation fails for some reason. Otherwise, they are functionally the same, with the exception of ast_strdup and ast_strndup. These functions have the added ability to accept a NULL argument without error, which will just be ignored without generating an error. The coding guidelines have also been updated to reflect all of this information. (issue #4996) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7952 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-10Bug 5961 - new RAND() functionTilghman Lesher
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7920 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-04add memory-pool based string field management for structuresKevin P. Fleming
convert chan_sip sip_pvt and sip_registry structures to use string fields add 'const' qualifiers to a few API calls that don't modify their input strings add an asprintf() wrapper to astmm git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7797 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-29remove extraneous svn:executable propertiesKevin P. Fleming
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7221 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-08issue #5569 minus lock.h changesKevin P. Fleming
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7024 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-01add new GCC-specific macro and force inlining of certain functions where ↵Kevin P. Fleming
speed is paramount, even when optimization is disabled git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6929 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-31don't pass short arguments by value, it will cause compiler warnings on most ↵Kevin P. Fleming
platforms about implicit conversions (thanks Luigi!) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6901 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-29do saturated math properly (thanks to the eagle-eyes of Tony Mountifield)Kevin P. Fleming
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6888 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-28ensure that SLINEAR volume adjustments don't wrap around short integer maximumsKevin P. Fleming
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6882 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-24Doxygen documentation update from oej (issue #5505)Russell Bryant
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6847 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-16More utility cleanupsMark Spencer
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6798 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-23move process_quotes_and_slashes to utils.c since it is used by both pbx_ael ↵Russell Bryant
and pbx_config clean up some formatting remove some commented out reference code move unload_module in pbx_ael down to be with the rest of the standard module functions git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6630 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-08first set of Cygwin portability stuff (issue #4678)Kevin P. Fleming
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6547 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-08-30major header file cleanup: license, copyrights, descriptions, markers, etc.Kevin P. Fleming
remove deprecated config_old.c/config_old.h remove unused cvsid.h git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6454 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-08-29encode/decode URIs in 'pedantic' mode (issue #3923)Kevin P. Fleming
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6441 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-07-19split acl and netsock code into separate files, in preparation for new ↵Kevin P. Fleming
netsock implementation various minor cleanups git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6165 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-07-11simplify (and document!) macro for inlinable API functions (inspired by bug ↵Kevin P. Fleming
#4603, with slightly different implementation) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6090 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-06-24split up string/time functions into separate header filesKevin P. Fleming
make more LOW_MEMORY optimizations, and ensure that a non-inline version of each inlinable function is always available (for external modules) move compiler-specific stuff into a separate header file git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6008 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-06-23make inlinable functions only need the function body in one file, and ↵Kevin P. Fleming
respond properly to LOW_MEMORY being defined make ast_copy_string inlinable, and ast_tvdiff_ms LOW_MEMORY aware git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5992 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-06-18Fix up utils nonsenseMark Spencer
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5932 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-06-17string/whitespace handling cleanups (bug #4449, with mods)Kevin P. Fleming
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5924 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-06-14don't use pthread_mutex_lockKevin P. Fleming
don't double-include pthread.h in utils.h, which can cause the pthread_mutex_lock warning to not be generated on some systems git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5906 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-06-09move timeval-diff function into utils.h from app_alarmreceiver.cKevin P. Fleming
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5882 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-06-07header ordering fixes for FreeBSD (pending a global merge into asterisk.h) ↵Kevin P. Fleming
(bug #4484) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5876 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-05-20make IF dialplan function handle quoted strings properly (bug #4322, with ↵Kevin P. Fleming
API mods) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5750 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-05-15add ast_build_string library function (from bug #3644)Kevin P. Fleming
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5684 65c4cc65-6c06-0410-ace0-fbb531ad65f3