This is a delta version of sysv ipc. A quick fix to get the ipc patches
working with linux-0.99p7. There will be a more thorough version later.
Messages, semaphores and shared memory are implemented ... completely?

See the file ipc.info for details on SYSV IPC and this implementation 
in particular. 


COPYING: These files are distributed under the GNU copyleft.  There's
a copy in the file ...src/linux/COPYING with the linux distribution.



FILES: 
To install move the files in the src/ subdirectory to ...src/linux/ipc/.
The include files go to /usr/include/sys/ and /usr/include/linux/.  
The test directory can go anywhere (It has a README file).
The file ipc.cd contains patches that must be applied to the kernel sources.



BUILD: 
0) If you do not have the fsync patches installed then apply the patch
   in fsync.cd.  `cd .....src/linux/ ; patch -p1 < ...../fsync.cd`
   This will not give you a working fsync.
1) Apply the patches with `cd ....src/linux/ ; patch -p1 < ..../ipc.cd`.
   The patches are small but alter the task_struct ... it may be necessary
   to do a 'make clean; make' to get a bootable Image.
2) Edit the limits defined in the include files 
   ... if you like.
3) Build and install a new Image.
4) Build and install libipc.a, ipcs and ipcrm from the test directory.



HISTORY:
1) ipcbeta  : buggy as hell .. dont use.
2) ipcbeta+ : works with linux-0.99 .. 0.99p6 or so. 
3) ipcdelta : current. Needs linux-0.99p7
   and it will change again with 0.99p8


CHANGES from ipcbeta+:
1) sem: Initialization of sem_seq (bug fix).
2) shm: non-specific attaches are now in range 0x40000000-0x60000000 
3) shm: update of shm_swp in killseg() (bug fix).
4) shm: allocation of more than one page table in shm_map (bug fix).
5) shm: altered shm_code to use SWP_TYPE for linux-0.99p7
6) shm: added flag SHM_REMAP for attach requests over mapped regions.
        This allows code_space attaches needed for dosemu development 
        so dont use it....it may soon be gone.
	
CHANGES from ipcbeta:
1) Many assorted bug fixes.
2) The ipc facilities are configured at kernel compile time so the old
   ipcs program for initialization is defunct.
3) Shared memory is now faulted in and swapped. brk is not altered.
   For shared pages, the mapping count in mem_map[] is (1 + user mappings).
   Keep this in mind when looking at reports from ps or free. 
4) There are fewer implementation imposed limits.
5) A lot of the locking was removed. This made some of the ugly
   semaphore syscalls even uglier ... so I may put some of the 
   locking back in. Some bugs may have developed in the process.
6) ipcs and ipcrm are new user programs to get ipc info and remove 
   stale resources. 



TODO:
1) Anyone using SEM_UNDO? I would be happy to see it gone.
2) Anyone using the seminfo, msginfo and shminfo structures?
3) Anyone need the various limits listed as unused/unimplemented?
4) proc interface, getting meaningful numbers with ps/free
 
Given sysv ipc compatibility there is room for enhancements. 
Please mail me complaints, bug reports, fixes, ideas.



I would like to thank Ove Ewerlid, Bruno Haible, Ulrich Pegelow,
and Linus Torvalds for ideas, bug reports, bug fixes, tutorials,  
and entertainment.

krishna balasub@cis.ohio-state.edu
3/15/93