sem* and msg* for qemu, part2, by Kirill Shutemov.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2383 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
		
							parent
							
								
									fa2948167f
								
							
						
					
					
						commit
						d96372efaa
					
				@ -1152,6 +1152,35 @@ static long do_ipc(long call, long first, long second, long third,
 | 
				
			|||||||
        gemu_log("Unsupported ipc call: %ld (version %d)\n", call, version);
 | 
					        gemu_log("Unsupported ipc call: %ld (version %d)\n", call, version);
 | 
				
			||||||
        ret = -ENOSYS;
 | 
					        ret = -ENOSYS;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						case IPCOP_msgget:
 | 
				
			||||||
 | 
							ret = get_errno(msgget(first, second));
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						case IPCOP_msgsnd:
 | 
				
			||||||
 | 
							ret = get_errno(msgsnd(first, (struct msgbuf *) ptr, second, third));
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						case IPCOP_msgctl:
 | 
				
			||||||
 | 
							ret = get_errno(msgctl(first, second, (struct msqid_ds *) ptr));
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						case IPCOP_msgrcv:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								struct ipc_kludge
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									void *__unbounded msgp;
 | 
				
			||||||
 | 
									long int msgtyp;
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								struct ipc_kludge *foo = (struct ipc_kludge *) ptr;
 | 
				
			||||||
 | 
								struct msgbuf *msgp = (struct msgbuf *) foo->msgp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								ret = get_errno(msgrcv(first, msgp, second, 0, third));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case IPCOP_shmat:
 | 
					    case IPCOP_shmat:
 | 
				
			||||||
	/* SHM_* flags are the same on all linux platforms */
 | 
						/* SHM_* flags are the same on all linux platforms */
 | 
				
			||||||
	ret = get_errno((long) shmat(first, (void *) ptr, second));
 | 
						ret = get_errno((long) shmat(first, (void *) ptr, second));
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user