Пример #1
0
/* ARGSUSED */
int
hubspc_open(devfs_handle_t *devp, mode_t oflag, int otyp, cred_t *crp)
{
        int errcode = 0;
        
        switch ((hubspc_subdevice_t)(ulong)device_info_get(*devp)) {
        case HUBSPC_REFCOUNTERS:
                errcode = mem_refcnt_open(devp, oflag, otyp, crp);
                break;

        case HUBSPC_PROM:
		/* Check if the user has proper access rights to 
		 * read/write the prom space.
		 */
                if (!cap_able(CAP_DEVICE_MGT)) {
                        errcode = EPERM;
                }                
                break;

        default:
                errcode = ENODEV;
        }

#ifdef	HUBSPC_DEBUG
	printf("hubspc_open: Completed open for type %d\n",
               (hubspc_subdevice_t)(ulong)device_info_get(*devp));
#endif	/* HUBSPC_DEBUG */

        return (errcode);
}
Пример #2
0
/* ARGSUSED */
int
hubspc_open(devfs_handle_t *devp, mode_t oflag, int otyp, cred_t *crp)
{
    int errcode = 0;

    switch ((hubspc_subdevice_t)(ulong)device_info_get(*devp)) {
    case HUBSPC_REFCOUNTERS:
        errcode = mem_refcnt_open(devp, oflag, otyp, crp);
        break;

    case HUBSPC_PROM:
        break;

    default:
        errcode = ENODEV;
    }

#ifdef	HUBSPC_DEBUG
    printf("hubspc_open: Completed open for type %d\n",
           (hubspc_subdevice_t)(ulong)device_info_get(*devp));
#endif	/* HUBSPC_DEBUG */

    return (errcode);
}