Age | Commit message (Collapse) | Author | Files | Lines |
|
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
|
|
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r187300 | tilghman | 2009-04-08 23:31:38 -0500 (Wed, 08 Apr 2009) | 3 lines
Add debugging mode for diagnosing file descriptor leaks.
(Related to issue #14625)
........
r187301 | tilghman | 2009-04-08 23:32:40 -0500 (Wed, 08 Apr 2009) | 2 lines
Oops, missed this file in the last commit.
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@187302 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
enabled by default.
menuselect was not happy with this.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@175255 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
memory allocator. See doc/hoard.txt for more details.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@135405 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@134086 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
to the more accurate float-based routines).
(Closes issue #11679)
(Step 1 of 2)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@132510 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r127133 | tilghman | 2008-07-01 15:25:37 -0500 (Tue, 01 Jul 2008) | 2 lines
Disable the old, slow search for matching callno in chan_iax2 (but allow it to be reenabled for debugging)
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@127143 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@112426 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r109973 | qwell | 2008-03-19 12:12:52 -0500 (Wed, 19 Mar 2008) | 5 lines
People report bugs about Asterisk crashing with DO_CRASH enabled was getting a little silly...
Now we only show certain cflags when you run configure with --enable-dev-mode
(corresponding menuselect change to follow)
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@109974 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
an http post are not read into memory.
This does introduce a dependency on the GMime library for handling HTTP POSTs, but it is available in most distros.
If the library is present, then the compile flag for ENABLE_UPLOADS is enabled by default in menuselect.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@109229 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(closes issue #11268)
Reported by: moy
Patches:
chantrace-datastored-encapsulated-rev94934.patch uploaded by moy (license 222)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@103754 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
Allow better busy detect debugging (with BUSYDETECT_DEBUG).
Remove very old BUSYDETECT and BUSY_DETECT_MARTIN defines.
(closes issue #11107)
Patches:
busydetect_enhancement.patch uploaded by agx (license 298)
busydetect-r94975.diff uploaded by sergee (license 138)
Additional changes/cleanup by me.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@98998 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
used flags appear closer to the top.
Reported by: tzafrir
Patch by: tzafrir,tilghman
(Closes issue #11528)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@94818 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
options, activated via the menuselect stuff, which defaults to the old way. non-zero sample data added. Translate tables expressed in microseconds instead of milliseconds, with 5-digit data now instead of 3, giving 2 more digits of precision.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@80113 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r77827 | kpfleming | 2007-07-31 10:53:42 -0500 (Tue, 31 Jul 2007) | 2 lines
DETECT_DEADLOCKS can't be enabled without DEBUG_THREADS or it does nothing
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@77828 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@76925 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@71024 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
for Mark Spencers upcoming 30th birthday.
To enable, run `make menuselect` and select the option MARKO_BDAY under Compiler Flags.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@58742 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r49553 | kpfleming | 2007-01-04 16:51:01 -0600 (Thu, 04 Jan 2007) | 2 lines
add support for tracking thread-local-storage objects that exist via 'threadstorage' CLI commands
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@49578 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@43281 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@42263 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
- 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
|
|
reverted per-directory .cleancount support
added ability for 'remove_on_change' to support multiple filenames
add 'remove_on_change' support to members, not just categories
only do 'remove_on_change' removals if the config is actually saved
add a 'remove_on_change' entry for each module found by prep_moduledeps so that if it gets turned off any existing .o/.so files will disappear
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@34577 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@32845 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
option in menuselect. This is very useful for developers if you want to ensure
that all of your builds are done without optimizations.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@32434 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@29465 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
defined in buildopts.h. Also, remove a few more stray spaces in the gcc commands.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@27130 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@26845 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
instead of being added to the compiler commands. This header file will be
installed and modules built outside of the main tree will be able to use the
same build options used to build the rest of Asterisk.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@26808 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@23536 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
optimizations aren't being used
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@23037 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@23012 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
autoconf and menuselect tools for Asterisk!
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@22267 f38db490-d61c-443f-a65b-d21fe96a405b
|