L 5.19:  Processing direct strings in do_long_ipc

(Revision 0  5 December 2000)

 

overview    This  section  processes the direct string part of memory messages. It does a simple sanity check, copies the strings from sender's buffer to receiver's buffer with interrupts enabled and stores the number of direct words copied in the result word.

on entry	rcv_hdr	mapped via XKSSEG to receiver's msg hdr
		snd_hdr pointer to sender's message header
data	L4_IPC_REMSGCUT    0xE0 (7 in error code in result word dope)
        
103,104,125 if there's a direct string
105-107 initialize dword pointers and counter
108,109,114 if send dword buffer size > total buffer size for sending/receiving
111-113 flush temporary window mappings from tlb and return with "message truncated" error code
116,117 sp <-- address of first send dword in message
rp <-- address of first receive dword in message
118 CP0<IE> <-- 1 (enable interrupts)
119-122 copy dwords from sender memory buffer to receiver memory buffer
123 CP0<IE> <-- 0 (disable interrupts)
124 result word dword field <-- # of dwords in send msg header send field