angela@cernvax.UUCP (angela) (09/15/86)
I'd like to pose several questions concerning F$STrap to the os-9 experts. I'm currently using OS-9/68K, version 1.2. I'm writing several real-time processes which need to communicate with MC68008-based boards via dual port memory. It is conceivable (heaven- forbid) that somebody could come along and pull out one of these boards, causing a bus error the next time the cards dual-port memory is addressed. I would like to use the F$STrap system call to catch the bus error and do some other processing. It would be nice to know which process and which external I/O address caused the bus error (ie. tells me which board shouldn't be addressed). 1. Can anybody give me a clearer example than the documentation gives on how to use F$STrap when dealing with a bus error? If possible could it include example register values and how the stack image would look too. 2. Is it feasible to find out the process and external I/O address causing the bus error? I can imagine a way of doing this by using the PC against the module directory information to identify the process and presumably, the address can be got from one of the address registers in the stack image. This, however, sounds long- winded and complicated to me. 3. How could I determine a suitable position to restart the erring process so that it can, at least, deal with other boards correctly, and ignore the faulty one? (the process is written in C). I don't really want to terminate the process and then restart it, as it has an initialisation phase I don't want repeating. I would greatly appreciate any suggestions that may push me in the right direction. Angela Smith CERN, Geneva angela@cernvax.UUCP