I think so but you probably need to run the code on the prus. You would need to set up an interrupt on the clock line and write an ISR that copies the state of the three data pins to buffers.
That gets the data in, now you have to get it back out. There are lots of possibilities but I would probably use a ring buffer with semaphores. For each channel you set up 2 buffers, a variable indicating which one is the write buffer and a Boolean "I'm done flag". On the pru, you fill up one buffer, update the write buffer index and flip the "I'm done" flag. On the linux side, you wait for the "I'm done flag", grab the whole buffer, flip the flag back then process/write to disk