<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: 12pt">
<DIV>Hi Guys,</DIV>
<DIV>&nbsp;</DIV>
<DIV>I am working on a custom PRI PBX running Asterisk 1.4.44/ DAHDI 
2.5.0.2+2.5.0.2.</DIV>
<DIV>I am tiring to optimize the performance a bit an din this respect I have 
spent some time investigating the structure and interfaces of the 
components</DIV>
<DIV>Asterisk &lt;-&gt;chan_dahdi &lt;-&gt; DAHDI &lt;-&gt; hardware 
driver.</DIV>
<DIV>Most seems to be clear but still I have some doubts. What I think 
now.</DIV>
<DIV>&nbsp;</DIV>
<DIV>- The hardware driver is registering PRI span with channels , capabilities 
and supporting functions. It calls dahdi_register().</DIV>
<DIV>&nbsp;&nbsp; As a result DAHDI can call low level hardware functions</DIV>
<DIV>- The actual speech data are hooked up on the 1ms interrupt in the hardware 
driver </DIV>
<DIV>&nbsp; and calls to DAHDI functions dahdi_receive/dahdi_transmit is used to 
pass the speech chunks.</DIV>
<DIV>- chan_dahdi is registering few functions using ast_channel_register(). So 
Asterisk can call low level chan_dahdi functions.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>What I am not very clear is the interface chan_dahdi &lt;-&gt; DAHDI 
(kernel &lt;–&gt; userspace).&nbsp; <BR>It seems DAHDI is exposing timing 
interface /dev/dahdi/pseudo but I am not sure if chan_dadhi is using it? </DIV>
<DIV>What I think is that chan_dadhi is doing unblocking read on the file 
descriptor which DAHDI provides (for the speech data chunks)</DIV>
<DIV>and this is how the timings from the kernel space goes to the user space. 
</DIV>
<DIV>Can someone shed some light on this please?</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thank you </DIV>
<DIV>Dimitar</DIV>
<DIV>&nbsp;</DIV></DIV></DIV></BODY></HTML>