Hi again,
On Thu, Jun 24, 2010 at 09:44:25AM +0200, Harald Welte wrote:
On Wed, Jun 23, 2010 at 07:30:31PM +0200, Harald Welte wrote:
Some 'gotchas' you might encounter that are not fixed yet:
- The L1 completion handler crashes. In target/firmware/layer1/prim_tx_nb.c ,
l1s.completion[L1_COMPL_TX_NB] is set in l1s_tx_test() but that's never called. So you need to comment out l1s_compl_sched(L1_COMPL_TX_NB) in the 'resp' handler temporarly until a proper fix.
the proper fix is to either move all the l1s.completion[] assignments to l1s_init(), as they only need to be set once - or to have a initialization function for each primitive. The first option requires making the completion functions non-static, which I would actually try to avoid. But having an init callback function for each primitive that only assigns one pointer is probably a stupid idea, too.
I think the cleanest solution is to use __attribute__ ((constructor)) like this:
I've now finished the neccessary linker script magic and code to actually call the constructor functions. It has all been merged to master.