aboutsummaryrefslogtreecommitdiffstats
path: root/funcs/func_global.c
AgeCommit message (Collapse)AuthorFilesLines
2009-04-24Convert the ast_channel data structure over to the astobj2 framework.russell1-6/+29
There is a lot that could be said about this, but the patch is a big improvement for performance, stability, code maintainability, and ease of future code development. The channel list is no longer an unsorted linked list. The main container for channels is an astobj2 hash table. All of the code related to searching for channels or iterating active channels has been rewritten. Let n be the number of active channels. Iterating the channel list has gone from O(n^2) to O(n). Searching for a channel by name went from O(n) to O(1). Searching for a channel by extension is still O(n), but uses a new method for doing so, which is more efficient. The ast_channel object is now a reference counted object. The benefits here are plentiful. Some benefits directly related to issues in the previous code include: 1) When threads other than the channel thread owning a channel wanted access to a channel, it had to hold the lock on it to ensure that it didn't go away. This is no longer a requirement. Holding a reference is sufficient. 2) There are places that now require less dealing with channel locks. 3) There are places where channel locks are held for much shorter periods of time. 4) There are places where dealing with more than one channel at a time becomes _MUCH_ easier. ChanSpy is a great example of this. Writing code in the future that deals with multiple channels will be much easier. Some additional information regarding channel locking and reference count handling can be found in channel.h, where a new section has been added that discusses some of the rules associated with it. Mark Michelson also assisted with the development of this patch. He did the conversion of ChanSpy and introduced a new API, ast_autochan, which makes it much easier to deal with holding on to a channel pointer for an extended period of time and having it get automatically updated if the channel gets masqueraded. Mark was also a huge help in the code review process. Thanks to David Vossel for his assistance with this branch, as well. David did the conversion of the DAHDIScan application by making it become a wrapper for ChanSpy internally. The changes come from the svn/asterisk/team/russell/ast_channel_ao2 branch. Review: http://reviewboard.digium.com/r/203/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@190423 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-01Merge changes from team/group/appdocsxmlrussell1-21/+45
This commit introduces the first phase of an effort to manage documentation of the interfaces in Asterisk in an XML format. Currently, a new format is available for applications and dialplan functions. A good number of conversions to the new format are also included. For more information, see the following message to asterisk-dev: http://lists.digium.com/pipermail/asterisk-dev/2008-October/034968.html git-svn-id: http://svn.digium.com/svn/asterisk/trunk@153365 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-05make datastore creation and destruction a generic API since it is not really ↵kpfleming1-2/+2
channel related, and add the ability to add/find/remove datastores to manager sessions git-svn-id: http://svn.digium.com/svn/asterisk/trunk@135680 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-05Fix the SHARED() read callback to properly unlock the channel. This functionrussell1-1/+6
could not have worked, as it left the channel locked in all cases. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@105899 f38db490-d61c-443f-a65b-d21fe96a405b
2008-02-25Shared space for variables (instead of letting other channels muck with your ↵tilghman1-1/+163
own) (closes issue #11943) Reported by: ramonpeek Patches: 20080208__bug11943__2.diff.txt uploaded by Corydon76 (license 14) Tested by: jmls git-svn-id: http://svn.digium.com/svn/asterisk/trunk@104098 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-22remove some useless includesrizzo1-2/+0
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89521 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-16Start untangling header inclusion in a way that does not affectrizzo1-4/+0
build times - tested, there is no measureable difference before and after this commit. In this change: use asterisk/compat.h to include a small set of system headers: inttypes.h, unistd.h, stddef.h, stddint.h, sys/types.h, stdarg.h, stdlib.h, alloca.h, stdio.h Where available, the inclusion is conditional on HAVE_FOO_H as determined by autoconf. Normally, source files should not include any of the above system headers, and instead use either "asterisk.h" or "asterisk/compat.h" which does it better. For the time being I have left alone second-level directories (main/db1-ast, etc.). git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89333 f38db490-d61c-443f-a65b-d21fe96a405b
2007-01-24Doxygen updateoej1-0/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@51920 f38db490-d61c-443f-a65b-d21fe96a405b
2007-01-06finish const-ifying ast_func_read()kpfleming1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@49741 f38db490-d61c-443f-a65b-d21fe96a405b
2006-08-21merge new_loader_completion branch, including (at least):kpfleming1-16/+3
- 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: http://svn.digium.com/svn/asterisk/trunk@40722 f38db490-d61c-443f-a65b-d21fe96a405b
2006-06-07simplify autoconfig include mechanism (make tholo happy he can use lint ↵kpfleming1-4/+4
again :-) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@32846 f38db490-d61c-443f-a65b-d21fe96a405b
2006-05-29this file contained the body twice, so remove the second instance.rizzo1-99/+0
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@30699 f38db490-d61c-443f-a65b-d21fe96a405b
2006-05-28Deprecate SetGlobalVar, replacing it with a dialplan functiontilghman1-0/+198
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@30677 f38db490-d61c-443f-a65b-d21fe96a405b