Document how we synchronize access to the fields in the cryptocap

structure.
This commit is contained in:
Pawel Jakub Dawidek 2006-05-22 07:49:42 +00:00
parent bda0abc627
commit 3aaf7145c5
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=158824

View File

@ -305,10 +305,17 @@ struct cryptkop {
int (*krp_callback)(struct cryptkop *);
};
/* Crypto capabilities structure */
/*
* Crypto capabilities structure.
*
* Synchronization:
* (d) - protected by CRYPTO_DRIVER_LOCK()
* (q) - protected by CRYPTO_Q_LOCK()
* Not tagged fields are read-only.
*/
struct cryptocap {
u_int32_t cc_sessions;
u_int32_t cc_koperations;
u_int32_t cc_sessions; /* (d) number of sessions */
u_int32_t cc_koperations; /* (d) number os asym operations */
/*
* Largest possible operator length (in bits) for each type of
@ -320,12 +327,12 @@ struct cryptocap {
u_int8_t cc_kalg[CRK_ALGORITHM_MAX + 1];
u_int8_t cc_flags;
u_int8_t cc_qblocked; /* symmetric q blocked */
u_int8_t cc_kqblocked; /* asymmetric q blocked */
u_int8_t cc_flags; /* (d) flags */
#define CRYPTOCAP_F_CLEANUP 0x01 /* needs resource cleanup */
#define CRYPTOCAP_F_SOFTWARE 0x02 /* software implementation */
#define CRYPTOCAP_F_SYNC 0x04 /* operates synchronously */
u_int8_t cc_qblocked; /* (q) symmetric q blocked */
u_int8_t cc_kqblocked; /* (q) asymmetric q blocked */
void *cc_arg; /* callback argument */
int (*cc_newsession)(void*, u_int32_t*, struct cryptoini*);