mux
static void mux(char *);
mux(outbuf);
mux(outbuf);
mux(outbuf);
mux(outbuf);
i2c_mux_t *mux;
mux = nex->in_data.in_mux;
for (uint32_t i = 0; i < mux->im_nports; i++) {
i2c_nex_bus_config_one(mux->im_ports[i].ip_nex, &conf);
i2c_mux_t *mux;
mux = nex->in_data.in_mux;
for (uint32_t i = 0; i < mux->im_nports; i++) {
i2c_nex_bus_unconfig_one(mux->im_ports[i].ip_nex,
i2c_nex_detach_mux(i2c_mux_t *mux)
i2c_nexus_t *nex = mux->im_nex;
for (uint32_t i = 0; i < mux->im_nports; i++) {
i2c_port_fini(&mux->im_ports[i]);
i2c_nex_attach_mux(i2c_mux_t *mux)
i2c_nexus_t *nex = mux->im_nex;
for (uint32_t i = 0; i < mux->im_nports; i++) {
&mux->im_ports[i], i, mux->im_ops->mux_port_name_f,
mux->im_drv)) {
i2c_nex_detach_mux(mux);
i2c_txn_t *txn = i2c_txn_alloc(ctrl, I2C_LOCK_TAG_MUX_UNREG, mux);
if (mux->im_nex->in_dip != NULL) {
i2cnex_nex_free(mux->im_nex);
kmem_free(mux, sizeof (i2c_mux_t));
i2c_mux_t *mux = kmem_zalloc(sizeof (i2c_mux_t), KM_SLEEP);
mux->im_drv = reg->mr_drv;
mux->im_ops = reg->mr_ops;
mux->im_nports = reg->mr_nports;
mux->im_curport = I2C_MUX_PORT_NONE;
mux->im_nex = i2cnex_nex_alloc(I2C_NEXUS_T_MUX, nex->in_dip, nex, NULL,
if (mux->im_nex == NULL) {
i2c_mux_free(mux);
mux->im_nex->in_data.in_mux = mux;
dev->id_mux = mux;
*muxp = (i2c_mux_hdl_t *)mux;
i2c_mux_t *mux = port->ip_nex->in_pnex->in_data.in_mux;
if (!mux->im_ops->mux_port_disable_f(mux->im_drv, txn,
mux->im_curport = I2C_MUX_PORT_NONE;
i2c_mux_t *mux = port->ip_nex->in_pnex->in_data.in_mux;
if (!mux->im_ops->mux_port_enable_f(mux->im_drv, txn,
mux->im_curport = port->ip_portno;
i2c_mux_free(i2c_mux_t *mux)
i2cnex_nex_free(mux->im_nex);
mux->im_nex = NULL;
kmem_free(mux, sizeof (i2c_mux_t));
i2c_mux_t *mux = (i2c_mux_t *)hdl;
i2c_nexus_t *pnex = mux->im_nex->in_pnex;
VERIFY3P(dev->id_mux, ==, mux);
i2c_ctrl_t *ctrl = mux->im_nex->in_ctrl;
i2c_mux_t *mux = nex->in_data.in_mux;
info.umi_nports = mux->im_nports;
overlay_mux_t *mux;
mux = overlay_mux_open(odd->odd_plugin, domain, family, prot,
if (mux == NULL)
overlay_mux_add_dev(mux, odd);
odd->odd_mux = mux;
ret = mux->omux_plugin->ovp_ops->ovpo_decap(NULL, mp, &infop);
mutex_enter(&mux->omux_lock);
odd = avl_find(&mux->omux_devices, &od, NULL);
mutex_exit(&mux->omux_lock);
mutex_exit(&mux->omux_lock);
mutex_exit(&mux->omux_lock);
overlay_mux_t *mux;
for (mux = list_head(&overlay_mux_list); mux != NULL;
mux = list_next(&overlay_mux_list, mux)) {
if (domain == mux->omux_domain &&
family == mux->omux_family &&
protocol == mux->omux_protocol &&
len == mux->omux_alen &&
bcmp(addr, mux->omux_addr, len) == 0) {
if (opp != mux->omux_plugin) {
mutex_enter(&mux->omux_lock);
mux->omux_count++;
mutex_exit(&mux->omux_lock);
return (mux);
mux = kmem_alloc(sizeof (overlay_mux_t), KM_SLEEP);
list_link_init(&mux->omux_lnode);
mux->omux_ksock = ksock;
mux->omux_plugin = opp;
mux->omux_domain = domain;
mux->omux_family = family;
mux->omux_protocol = protocol;
mux->omux_addr = kmem_alloc(len, KM_SLEEP);
bcopy(addr, mux->omux_addr, len);
mux->omux_alen = len;
mux->omux_count = 1;
avl_create(&mux->omux_devices, overlay_mux_comparator,
mutex_init(&mux->omux_lock, NULL, MUTEX_DRIVER, NULL);
*errp = ksocket_krecv_set(ksock, overlay_mux_recv, mux);
mutex_destroy(&mux->omux_lock);
avl_destroy(&mux->omux_devices);
kmem_free(mux->omux_addr, len);
kmem_free(mux, sizeof (overlay_mux_t));
list_insert_tail(&overlay_mux_list, mux);
return (mux);
overlay_mux_close(overlay_mux_t *mux)
mutex_enter(&mux->omux_lock);
mux->omux_count--;
if (mux->omux_count != 0) {
mutex_exit(&mux->omux_lock);
list_remove(&overlay_mux_list, mux);
mutex_exit(&mux->omux_lock);
ksocket_close(mux->omux_ksock, kcred);
avl_destroy(&mux->omux_devices);
kmem_free(mux->omux_addr, mux->omux_alen);
kmem_free(mux, sizeof (overlay_mux_t));
overlay_mux_add_dev(overlay_mux_t *mux, overlay_dev_t *odd)
mutex_enter(&mux->omux_lock);
avl_add(&mux->omux_devices, odd);
mutex_exit(&mux->omux_lock);
overlay_mux_remove_dev(overlay_mux_t *mux, overlay_dev_t *odd)
mutex_enter(&mux->omux_lock);
avl_remove(&mux->omux_devices, odd);
mutex_exit(&mux->omux_lock);
overlay_mux_tx(overlay_mux_t *mux, struct msghdr *hdr, mblk_t *mp)
ret = ksocket_sendmblk(mux->omux_ksock, hdr, 0, &mp, kcred);
overlay_mux_t *mux = arg;