| 1124 | #endif /* EKCD */ |
| 1125 | |
| 1126 | static struct kerneldumpcomp * |
| 1127 | kerneldumpcomp_create(struct dumperinfo *di, uint8_t compression) |
| 1128 | { |
| 1129 | struct kerneldumpcomp *kdcomp; |
| 1130 | int format; |
| 1131 | |
| 1132 | switch (compression) { |
| 1133 | case KERNELDUMP_COMP_GZIP: |
| 1134 | format = COMPRESS_GZIP; |
| 1135 | break; |
| 1136 | case KERNELDUMP_COMP_ZSTD: |
| 1137 | format = COMPRESS_ZSTD; |
| 1138 | break; |
| 1139 | default: |
| 1140 | return (NULL); |
| 1141 | } |
| 1142 | |
| 1143 | kdcomp = malloc(sizeof(*kdcomp), M_DUMPER, M_WAITOK | M_ZERO); |
| 1144 | kdcomp->kdc_format = compression; |
| 1145 | kdcomp->kdc_stream = compressor_init(kerneldumpcomp_write_cb, |
| 1146 | format, di->maxiosize, kerneldump_gzlevel, di); |
| 1147 | if (kdcomp->kdc_stream == NULL) { |
| 1148 | free(kdcomp, M_DUMPER); |
| 1149 | return (NULL); |
| 1150 | } |
| 1151 | kdcomp->kdc_buf = malloc(di->maxiosize, M_DUMPER, M_WAITOK | M_NODUMP); |
| 1152 | return (kdcomp); |
| 1153 | } |
| 1154 | |
| 1155 | static void |
| 1156 | kerneldumpcomp_destroy(struct dumperinfo *di) |
no test coverage detected