Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/fs/smb/server/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  ksmbd_work.h

  Sprache: C
 

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *   Copyright (C) 2019 Samsung Electronics Co., Ltd.
 */


#ifndef __KSMBD_WORK_H__
#define __KSMBD_WORK_H__

#include <linux/ctype.h>
#include <linux/workqueue.h>

struct ksmbd_conn;
struct ksmbd_session;
struct ksmbd_tree_connect;

enum {
 KSMBD_WORK_ACTIVE = 0,
 KSMBD_WORK_CANCELLED,
 KSMBD_WORK_CLOSED,
};

struct aux_read {
 void *buf;
 struct list_head entry;
};

/* one of these for every pending CIFS request at the connection */
struct ksmbd_work {
 /* Server corresponding to this mid */
 struct ksmbd_conn               *conn;
 struct ksmbd_session            *sess;
 struct ksmbd_tree_connect       *tcon;

 /* Pointer to received SMB header */
 void                            *request_buf;
 /* Response buffer */
 void                            *response_buf;

 struct list_head  aux_read_list;

 struct kvec   *iov;
 int    iov_alloc_cnt;
 int    iov_cnt;
 int    iov_idx;

 /* Next cmd hdr in compound req buf*/
 int                             next_smb2_rcv_hdr_off;
 /* Next cmd hdr in compound rsp buf*/
 int                             next_smb2_rsp_hdr_off;
 /* Current cmd hdr in compound rsp buf*/
 int                             curr_smb2_rsp_hdr_off;

 /*
 * Current Local FID assigned compound response if SMB2 CREATE
 * command is present in compound request
 */

 u64    compound_fid;
 u64    compound_pfid;
 u64    compound_sid;

 const struct cred  *saved_cred;

 /* Number of granted credits */
 unsigned int   credits_granted;

 /* response smb header size */
 unsigned int                    response_sz;

 void    *tr_buf;

 unsigned char   state;
 /* No response for cancelled request */
 bool                            send_no_response:1;
 /* Request is encrypted */
 bool                            encrypted:1;
 /* Is this SYNC or ASYNC ksmbd_work */
 bool                            asynchronous:1;
 bool                            need_invalidate_rkey:1;

 unsigned int                    remote_key;
 /* cancel works */
 int                             async_id;
 void                            **cancel_argv;
 void                            (*cancel_fn)(void **argv);

 struct work_struct              work;
 /* List head at conn->requests */
 struct list_head                request_entry;
 /* List head at conn->async_requests */
 struct list_head                async_request_entry;
 struct list_head                fp_entry;
};

/**
 * ksmbd_resp_buf_next - Get next buffer on compound response.
 * @work: smb work containing response buffer
 */

static inline void *ksmbd_resp_buf_next(struct ksmbd_work *work)
{
 return work->response_buf + work->next_smb2_rsp_hdr_off + 4;
}

/**
 * ksmbd_resp_buf_curr - Get current buffer on compound response.
 * @work: smb work containing response buffer
 */

static inline void *ksmbd_resp_buf_curr(struct ksmbd_work *work)
{
 return work->response_buf + work->curr_smb2_rsp_hdr_off + 4;
}

/**
 * ksmbd_req_buf_next - Get next buffer on compound request.
 * @work: smb work containing response buffer
 */

static inline void *ksmbd_req_buf_next(struct ksmbd_work *work)
{
 return work->request_buf + work->next_smb2_rcv_hdr_off + 4;
}

struct ksmbd_work *ksmbd_alloc_work_struct(void);
void ksmbd_free_work_struct(struct ksmbd_work *work);

void ksmbd_work_pool_destroy(void);
int ksmbd_work_pool_init(void);

int ksmbd_workqueue_init(void);
void ksmbd_workqueue_destroy(void);
bool ksmbd_queue_work(struct ksmbd_work *work);
int ksmbd_iov_pin_rsp_read(struct ksmbd_work *work, void *ib, int len,
      void *aux_buf, unsigned int aux_size);
int ksmbd_iov_pin_rsp(struct ksmbd_work *work, void *ib, int len);
int allocate_interim_rsp_buf(struct ksmbd_work *work);
#endif /* __KSMBD_WORK_H__ */

Messung V0.5 in Prozent
C=94 H=89 G=91

¤ Dauer der Verarbeitung: 0.19 Sekunden  (vorverarbeitet am  2026-04-29) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.