<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: 12pt">
<DIV>Hi Guys,</DIV>
<DIV> </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 <->chan_dahdi <-> DAHDI <-> hardware
driver.</DIV>
<DIV>Most seems to be clear but still I have some doubts. What I think
now.</DIV>
<DIV> </DIV>
<DIV>- The hardware driver is registering PRI span with channels , capabilities
and supporting functions. It calls dahdi_register().</DIV>
<DIV> 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> 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> </DIV>
<DIV> </DIV>
<DIV>What I am not very clear is the interface chan_dahdi <-> DAHDI
(kernel <–> userspace). <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> </DIV>
<DIV>Thank you </DIV>
<DIV>Dimitar</DIV>
<DIV> </DIV></DIV></DIV></BODY></HTML>