basic char device driver framework