diff options
Diffstat (limited to 'usr/src/uts/common/os/modsysfile.c')
| -rw-r--r-- | usr/src/uts/common/os/modsysfile.c | 27 | 
1 files changed, 20 insertions, 7 deletions
| diff --git a/usr/src/uts/common/os/modsysfile.c b/usr/src/uts/common/os/modsysfile.c index 3605104ae7..a04294eed5 100644 --- a/usr/src/uts/common/os/modsysfile.c +++ b/usr/src/uts/common/os/modsysfile.c @@ -22,6 +22,7 @@  /*   * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms. + * Copyright 2018 Joyent, Inc.   * Copyright 2017 Nexenta Systems, Inc.   */ @@ -57,10 +58,12 @@ struct hwc_class *hcl_head;	/* head of list of classes */  static kmutex_t hcl_lock;	/* for accessing list of classes */  #define	DAFILE		"/etc/driver_aliases" +#define	PPTFILE		"/etc/ppt_aliases"  #define	CLASSFILE	"/etc/driver_classes"  #define	DACFFILE	"/etc/dacf.conf"  static char class_file[] = CLASSFILE; +static char pptfile[] = PPTFILE;  static char dafile[] = DAFILE;  static char dacffile[] = DACFFILE; @@ -2150,14 +2153,13 @@ hwc_parse_now(char *fname, struct par_list **pl, ddi_prop_t **props)  	return (0);	/* always return success */  } -void -make_aliases(struct bind **bhash) +static void +parse_aliases(struct bind **bhash, struct _buf *file)  {  	enum {  		AL_NEW, AL_DRVNAME, AL_DRVNAME_COMMA, AL_ALIAS, AL_ALIAS_COMMA  	} state; -	struct _buf *file;  	char tokbuf[MAXPATHLEN];  	char drvbuf[MAXPATHLEN];  	token_t token; @@ -2166,9 +2168,6 @@ make_aliases(struct bind **bhash)  	static char dupwarn[] = "!Driver alias \"%s\" conflicts with "  	    "an existing driver name or alias."; -	if ((file = kobj_open_file(dafile)) == (struct _buf *)-1) -		return; -  	state = AL_NEW;  	major = DDI_MAJOR_T_NONE;  	while (!done) { @@ -2253,8 +2252,22 @@ make_aliases(struct bind **bhash)  			kobj_file_err(CE_WARN, file, tok_err, tokbuf);  		}  	} +} -	kobj_close_file(file); +void +make_aliases(struct bind **bhash) +{ +	struct _buf *file; + +	if ((file = kobj_open_file(pptfile)) != (struct _buf *)-1) { +		parse_aliases(bhash, file); +		kobj_close_file(file); +	} + +	if ((file = kobj_open_file(dafile)) != (struct _buf *)-1) { +		parse_aliases(bhash, file); +		kobj_close_file(file); +	}  } | 
