shmsys.c revision 7c478bd95313f5f23a4c958a745db2134aa03244
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt/*
207cee019eb5cbbe7c905f7c52f7b5d11f8c0305Automatic Updater * CDDL HEADER START
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt *
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * The contents of this file are subject to the terms of the
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * Common Development and Distribution License, Version 1.0 only
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * (the "License"). You may not use this file except in compliance
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * with the License.
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt *
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * or http://www.opensolaris.org/os/licensing.
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * See the License for the specific language governing permissions
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * and limitations under the License.
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt *
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * When distributing Covered Code, include this CDDL HEADER in each
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * If applicable, add the following below this CDDL HEADER, with the
79ce3a9e82384cc31fd6b86be8f3d1474fcfd9f4Evan Hunt * fields enclosed by brackets "[]" replaced with your own identifying
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * information: Portions Copyright [yyyy] [name of copyright owner]
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt *
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * CDDL HEADER END
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt */
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt/*
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * Use is subject to license terms.
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt */
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#pragma ident "%Z%%M% %I% %E% SMI"
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt/* Copyright (c) 1988 AT&T */
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt/* All Rights Reserved */
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#pragma weak shmat = _shmat
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#pragma weak shmctl = _shmctl
39f2d1a96a7c7494b1db0ea0f45e063a6a5ef9bbEvan Hunt#pragma weak shmctl64 = _shmctl64
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#pragma weak shmdt = _shmdt
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#pragma weak shmget = _shmget
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#pragma weak shmids = _shmids
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Hunt
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Hunt#include "synonyms.h"
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#include <sys/types.h>
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#include <sys/ipc.h>
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#include <sys/ipc_impl.h>
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Hunt#include <sys/shm.h>
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#include <sys/shm_impl.h>
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#include <sys/syscall.h>
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt#include <errno.h>
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntvoid *
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntshmat(int shmid, const void *shmaddr, int shmflg)
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt{
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt sysret_t rval;
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt int error;
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt error = __systemcall(&rval, SYS_shmsys, SHMAT, shmid, shmaddr, shmflg);
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt if (error)
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt (void) __set_errno(error);
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Hunt return ((void *)rval.sys_rval1);
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Hunt}
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Hunt
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Huntint
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Huntshmctl(int shmid, int cmd, struct shmid_ds *buf)
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Hunt{
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt if (cmd == IPC_SET64 || cmd == IPC_STAT64) {
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt (void) __set_errno(EINVAL);
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt return (-1);
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt }
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Hunt return (syscall(SYS_shmsys, SHMCTL, shmid, cmd, buf));
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt}
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntint
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntshmctl64(int shmid, int cmd, struct shmid_ds64 *buf)
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt{
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt if (cmd != IPC_SET64 && cmd != IPC_STAT64) {
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt (void) __set_errno(EINVAL);
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt return (-1);
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt }
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt return (syscall(SYS_shmsys, SHMCTL, shmid, cmd, buf));
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt}
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Hunt
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntint
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntshmdt(char *shmaddr)
79ce3a9e82384cc31fd6b86be8f3d1474fcfd9f4Evan Hunt{
79ce3a9e82384cc31fd6b86be8f3d1474fcfd9f4Evan Hunt return (syscall(SYS_shmsys, SHMDT, shmaddr));
79ce3a9e82384cc31fd6b86be8f3d1474fcfd9f4Evan Hunt}
79ce3a9e82384cc31fd6b86be8f3d1474fcfd9f4Evan Hunt
79ce3a9e82384cc31fd6b86be8f3d1474fcfd9f4Evan Huntint
79ce3a9e82384cc31fd6b86be8f3d1474fcfd9f4Evan Huntshmget(key_t key, size_t size, int shmflg)
79ce3a9e82384cc31fd6b86be8f3d1474fcfd9f4Evan Hunt{
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt return (syscall(SYS_shmsys, SHMGET, key, size, shmflg));
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt}
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntint
e11a0c114cdaf8f7e7832e9f1a011138248093a6Evan Huntshmids(int *buf, uint_t nids, uint_t *pnids)
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt{
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt return (syscall(SYS_shmsys, SHMIDS, buf, nids, pnids));
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt}
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt