This page refers to the changes made in the 3.0.14 release of M-sim.
Pipes are now handled (somewhat) in the file tables (sockets are still not well supported). Pipes are identified using "FE_PIPE" in file_table.h.
#define FE_PIPE 0x00010
Additional functionality has been added: copy_from(...) allows a file table to be copied from one context to another - this is needed for forking.
void copy_from(const file_table_t & rhs);
dup2(...) is used to implement the dup2 system call.
md_gpr_t dup2(unsigned int handle_old, unsigned int handle_new);
insert(...) adds a file descriptor (using its real value) into the file table with an associated name. This is used with pipe to give the file descriptors to a context.
void insert(md_gpr_t fd, std::string name);
closeall() is used when a process terminates to close all of its open files.
Fixed a bug in file_table_t::opener(...). simulated_fd should not be set to temp, this could cause duplicate simulated file descriptors to occur (this should not be a problem in a single threaded, non-forking simulation).