The key to it is that the first arg is a pointer to a dev_t that the driver may modify during open. That only works if you're cloning actual devices. The SVR4 code is cloning devices into sockets, which would at best require a special case given the interface you proposed.