1388
1389 return (nvl);
1390 }
1391
1392 static void
1393 imc_nvl_pack(imc_socket_t *sock, boolean_t sleep)
1394 {
1395 char *buf = NULL;
1396 size_t len = 0;
1397 int kmflag;
1398
1399 if (sock->isock_nvl == NULL)
1400 return;
1401
1402 if (sock->isock_buf != NULL)
1403 return;
1404
1405 if (sleep) {
1406 kmflag = KM_SLEEP;
1407 } else {
1408 kmflag = KM_NOSLEEP | KM_NORMALPRI;
1409 }
1410
1411 if (nvlist_pack(sock->isock_nvl, &buf, &len, NV_ENCODE_XDR,
1412 kmflag) != 0) {
1413 return;
1414 }
1415
1416 sock->isock_buf = buf;
1417 sock->isock_buflen = len;
1418 sock->isock_gen++;
1419 }
1420
1421 static void
1422 imc_decoder_pack(imc_t *imc)
1423 {
1424 char *buf = NULL;
1425 size_t len = 0;
1426
1427 if (imc->imc_decoder_buf != NULL)
1428 return;
1429
1430 if (imc->imc_decoder_dump == NULL) {
1431 imc->imc_decoder_dump = imc_dump_decoder(imc);
1432 }
1433
1434 if (nvlist_pack(imc->imc_decoder_dump, &buf, &len, NV_ENCODE_XDR,
1435 KM_NOSLEEP | KM_NORMALPRI) != 0) {
1436 return;
1437 }
1438
1439 imc->imc_decoder_buf = buf;
1440 imc->imc_decoder_len = len;
1441 }
1442
1443 static void
1444 imc_nvl_create(imc_t *imc)
1445 {
1446 uint_t csock;
1447 for (csock = 0; csock < imc->imc_nsockets; csock++) {
1448 uint_t i;
1449 nvlist_t *nvl;
1450 nvlist_t *mcs[IMC_MAX_IMCPERSOCK];
1451 imc_socket_t *sock = &imc->imc_sockets[csock];
1452
1453 nvl = fnvlist_alloc();
1454 fnvlist_add_uint8(nvl, MCINTEL_NVLIST_VERSTR,
1455 MCINTEL_NVLIST_VERS1);
|
1388
1389 return (nvl);
1390 }
1391
1392 static void
1393 imc_nvl_pack(imc_socket_t *sock, boolean_t sleep)
1394 {
1395 char *buf = NULL;
1396 size_t len = 0;
1397 int kmflag;
1398
1399 if (sock->isock_nvl == NULL)
1400 return;
1401
1402 if (sock->isock_buf != NULL)
1403 return;
1404
1405 if (sleep) {
1406 kmflag = KM_SLEEP;
1407 } else {
1408 kmflag = KM_NOSLEEP_LAZY;
1409 }
1410
1411 if (nvlist_pack(sock->isock_nvl, &buf, &len, NV_ENCODE_XDR,
1412 kmflag) != 0) {
1413 return;
1414 }
1415
1416 sock->isock_buf = buf;
1417 sock->isock_buflen = len;
1418 sock->isock_gen++;
1419 }
1420
1421 static void
1422 imc_decoder_pack(imc_t *imc)
1423 {
1424 char *buf = NULL;
1425 size_t len = 0;
1426
1427 if (imc->imc_decoder_buf != NULL)
1428 return;
1429
1430 if (imc->imc_decoder_dump == NULL) {
1431 imc->imc_decoder_dump = imc_dump_decoder(imc);
1432 }
1433
1434 if (nvlist_pack(imc->imc_decoder_dump, &buf, &len, NV_ENCODE_XDR,
1435 KM_NOSLEEP_LAZY) != 0) {
1436 return;
1437 }
1438
1439 imc->imc_decoder_buf = buf;
1440 imc->imc_decoder_len = len;
1441 }
1442
1443 static void
1444 imc_nvl_create(imc_t *imc)
1445 {
1446 uint_t csock;
1447 for (csock = 0; csock < imc->imc_nsockets; csock++) {
1448 uint_t i;
1449 nvlist_t *nvl;
1450 nvlist_t *mcs[IMC_MAX_IMCPERSOCK];
1451 imc_socket_t *sock = &imc->imc_sockets[csock];
1452
1453 nvl = fnvlist_alloc();
1454 fnvlist_add_uint8(nvl, MCINTEL_NVLIST_VERSTR,
1455 MCINTEL_NVLIST_VERS1);
|