redo the entire driver to use a generic allocator, and add support for my kernel based allocator