Lines Matching refs:shp

43 smb_strip(smbios_hdl_t *shp)  in smb_strip()  argument
47 for (i = 0; i < shp->sh_nstructs; i++) { in smb_strip()
48 const smb_header_t *hp = shp->sh_structs[i].smbst_hdr; in smb_strip()
64 if (smbios_info_common(shp, hp->smbh_hdl, &info) != SMB_ERR) { in smb_strip()
77 smbios_hdl_t *shp = smb_zalloc(sizeof (smbios_hdl_t)); in smbios_bufopen() local
87 return (smb_open_error(shp, errp, ESMB_VERSION)); in smbios_bufopen()
91 return (smb_open_error(shp, errp, ESMB_INVAL)); in smbios_bufopen()
93 if (shp == NULL) in smbios_bufopen()
94 return (smb_open_error(shp, errp, ESMB_NOMEM)); in smbios_bufopen()
97 shp->sh_flags |= SMB_FL_DEBUG; in smbios_bufopen()
100 return (smb_open_error(shp, errp, ESMB_HEADER)); in smbios_bufopen()
103 return (smb_open_error(shp, errp, ESMB_HEADER)); in smbios_bufopen()
105 smb_dprintf(shp, "opening SMBIOS version %u.%u bcdrev 0x%x\n", in smbios_bufopen()
110 return (smb_open_error(shp, errp, ESMB_NEW)); in smbios_bufopen()
115 return (smb_open_error(shp, errp, ESMB_OLD)); in smbios_bufopen()
120 return (smb_open_error(shp, errp, ESMB_SHORT)); in smbios_bufopen()
133 smb_dprintf(shp, "bad cksum: e=%x i=%x\n", esum, isum); in smbios_bufopen()
134 return (smb_open_error(shp, errp, ESMB_CKSUM)); in smbios_bufopen()
143 bcopy(ep, &shp->sh_ent, sizeof (smbios_entry_t)); in smbios_bufopen()
144 shp->sh_ent.smbe_elen = sizeof (smbios_entry_t); in smbios_bufopen()
145 smbios_checksum(shp, &shp->sh_ent); in smbios_bufopen()
147 shp->sh_buf = buf; in smbios_bufopen()
148 shp->sh_buflen = len; in smbios_bufopen()
149 shp->sh_structs = smb_alloc(sizeof (smb_struct_t) * ep->smbe_stnum); in smbios_bufopen()
150 shp->sh_nstructs = 0; in smbios_bufopen()
151 shp->sh_hashlen = _smb_hashlen; in smbios_bufopen()
152 shp->sh_hash = smb_zalloc(sizeof (smb_struct_t *) * shp->sh_hashlen); in smbios_bufopen()
153 shp->sh_libvers = version; in smbios_bufopen()
154 shp->sh_smbvers = SMB_MAJMIN(ep->smbe_major, ep->smbe_minor); in smbios_bufopen()
156 if (shp->sh_structs == NULL || shp->sh_hash == NULL) in smbios_bufopen()
157 return (smb_open_error(shp, errp, ESMB_NOMEM)); in smbios_bufopen()
159 hp = shp->sh_buf; in smbios_bufopen()
163 smb_struct_t *stp = &shp->sh_structs[i]; in smbios_bufopen()
167 return (smb_open_error(shp, errp, ESMB_CORRUPT)); in smbios_bufopen()
169 smb_dprintf(shp, "struct [%u] type %u len %u hdl %u at %p\n", in smbios_bufopen()
176 return (smb_open_error(shp, errp, ESMB_CORRUPT)); in smbios_bufopen()
178 h = hp->smbh_hdl & (shp->sh_hashlen - 1); in smbios_bufopen()
187 return (smb_open_error(shp, errp, ESMB_CORRUPT)); in smbios_bufopen()
195 stp->smbst_next = shp->sh_hash[h]; in smbios_bufopen()
200 return (smb_open_error(shp, errp, ESMB_NOMEM)); in smbios_bufopen()
202 shp->sh_hash[h] = stp; in smbios_bufopen()
204 shp->sh_nstructs++; in smbios_bufopen()
216 smb_strip(shp); in smbios_bufopen()
218 return (shp); in smbios_bufopen()
222 smbios_close(smbios_hdl_t *shp) in smbios_close() argument
224 const smbios_entry_t *ep = &shp->sh_ent; in smbios_close()
227 for (i = 0; i < shp->sh_nstructs; i++) { in smbios_close()
228 smb_free(shp->sh_structs[i].smbst_strtab, in smbios_close()
229 sizeof (uint16_t) * shp->sh_structs[i].smbst_strtablen); in smbios_close()
232 smb_free(shp->sh_structs, sizeof (smb_struct_t) * ep->smbe_stnum); in smbios_close()
233 smb_free(shp->sh_hash, sizeof (smb_struct_t *) * shp->sh_hashlen); in smbios_close()
235 if (shp->sh_flags & SMB_FL_BUFALLOC) in smbios_close()
236 smb_free((void *)shp->sh_buf, shp->sh_buflen); in smbios_close()
238 smb_free(shp, sizeof (smbios_hdl_t)); in smbios_close()
248 smbios_checksum(smbios_hdl_t *shp, smbios_entry_t *ep) in smbios_checksum() argument
267 smbios_buf(smbios_hdl_t *shp) in smbios_buf() argument
269 return (shp->sh_buf); in smbios_buf()
273 smbios_buflen(smbios_hdl_t *shp) in smbios_buflen() argument
275 return (shp->sh_buflen); in smbios_buflen()
292 smbios_lookup_id(smbios_hdl_t *shp, id_t id, smbios_struct_t *sp) in smbios_lookup_id() argument
294 const smb_struct_t *stp = smb_lookup_id(shp, id); in smbios_lookup_id()
306 smbios_lookup_type(smbios_hdl_t *shp, uint_t type, smbios_struct_t *sp) in smbios_lookup_type() argument
308 const smb_struct_t *stp = smb_lookup_type(shp, type); in smbios_lookup_type()
320 smbios_iter(smbios_hdl_t *shp, smbios_struct_f *func, void *data) in smbios_iter() argument
322 const smb_struct_t *sp = shp->sh_structs; in smbios_iter()
326 for (i = 0; i < shp->sh_nstructs; i++, sp++) { in smbios_iter()
328 (rv = func(shp, smb_export(sp, &s), data)) != 0) in smbios_iter()
336 smb_lookup_type(smbios_hdl_t *shp, uint_t type) in smb_lookup_type() argument
340 for (i = 0; i < shp->sh_nstructs; i++) { in smb_lookup_type()
341 if (shp->sh_structs[i].smbst_hdr->smbh_type == type) in smb_lookup_type()
342 return (&shp->sh_structs[i]); in smb_lookup_type()
345 (void) smb_set_errno(shp, ESMB_NOENT); in smb_lookup_type()
350 smb_lookup_id(smbios_hdl_t *shp, uint_t id) in smb_lookup_id() argument
352 const smb_struct_t *stp = shp->sh_hash[id & (shp->sh_hashlen - 1)]; in smb_lookup_id()
356 (void) smb_set_errno(shp, ESMB_NOTSUP); in smb_lookup_id()
359 (void) smb_set_errno(shp, ESMB_NOENT); in smb_lookup_id()
369 (void) smb_set_errno(shp, ESMB_NOENT); in smb_lookup_id()
384 smb_gteq(smbios_hdl_t *shp, int version) in smb_gteq() argument
386 return (SMB_MAJOR(shp->sh_smbvers) > SMB_MAJOR(version) || ( in smb_gteq()
387 SMB_MAJOR(shp->sh_smbvers) == SMB_MAJOR(version) && in smb_gteq()
388 SMB_MINOR(shp->sh_smbvers) >= SMB_MINOR(version))); in smb_gteq()