+static
+enum lttng_error_code snapshot_record(const struct ltt_session *session,
+ const struct snapshot_output *snapshot_output, int wait)
+{
+ int64_t nb_packets_per_stream;
+ enum lttng_error_code ret = LTTNG_OK;
+
+ nb_packets_per_stream = get_session_nb_packets_per_stream(session,
+ snapshot_output->max_size);
+ if (nb_packets_per_stream < 0) {
+ ret = LTTNG_ERR_MAX_SIZE_INVALID;
+ goto end;
+ }
+
+ if (session->kernel_session) {
+ ret = record_kernel_snapshot(session->kernel_session,
+ snapshot_output, session,
+ wait, nb_packets_per_stream);
+ if (ret != LTTNG_OK) {
+ goto end;
+ }
+ }
+
+ if (session->ust_session) {
+ ret = record_ust_snapshot(session->ust_session,
+ snapshot_output, session,
+ wait, nb_packets_per_stream);
+ if (ret != LTTNG_OK) {
+ goto end;
+ }
+ }
+end:
+ return ret;
+}
+