+void
+device_register_generic(struct device_meta* devm, struct devclass* class,
+ char* fmt, ...)
+{
+ va_list args;
+ morph_t* morphed, *parent;
+
+ morphed = &devm->mobj;
+ va_start(args, fmt);
+
+ if (fmt) {
+ device_setname_vargs(devm, fmt, args);
+ }
+
+ if (class && morph_type_of(morphed, device_morpher))
+ {
+ struct device* dev = to_dev(devm);
+ dev->ident = (struct devident) {
+ .fn_grp = class->fn_grp,
+ .unique = DEV_UNIQUE(class->device, class->variant)
+ };
+ }
+
+ parent = morphed->parent;