Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Joe Martin
OpenLDAP
Commits
fec1c7b5
Commit
fec1c7b5
authored
Mar 25, 2003
by
Howard Chu
Browse files
Added slap_op_init/destroy, cache Operation structures
parent
f14561d5
Changes
2
Hide whitespace changes
Inline
Side-by-side
servers/slapd/main.c
View file @
fec1c7b5
...
...
@@ -361,6 +361,7 @@ int main( int argc, char **argv )
extops_init
();
lutil_passwd_init
();
slap_op_init
();
#ifdef SLAPD_MODULES
if
(
module_init
()
!=
0
)
{
...
...
@@ -587,6 +588,8 @@ destroy:
module_kill
();
#endif
slap_op_destroy
();
extops_kill
();
stop:
...
...
servers/slapd/operation.c
View file @
fec1c7b5
...
...
@@ -18,6 +18,26 @@
#include
"slapi.h"
#endif
static
ldap_pvt_thread_mutex_t
slap_op_mutex
;
static
LDAP_STAILQ_HEAD
(
s_o
,
slap_op
)
slap_free_ops
;
void
slap_op_init
()
{
ldap_pvt_thread_mutex_init
(
&
slap_op_mutex
);
LDAP_STAILQ_INIT
(
&
slap_free_ops
);
}
void
slap_op_destroy
()
{
Operation
*
o
;
while
(
(
o
=
LDAP_STAILQ_FIRST
(
&
slap_free_ops
))
!=
NULL
)
{
LDAP_STAILQ_REMOVE_HEAD
(
&
slap_free_ops
,
o_next
);
LDAP_STAILQ_NEXT
(
o
,
o_next
)
=
NULL
;
ch_free
(
o
);
}
ldap_pvt_thread_mutex_destroy
(
&
slap_op_mutex
);
}
void
slap_op_free
(
Operation
*
op
)
...
...
@@ -62,7 +82,10 @@ slap_op_free( Operation *op )
}
#endif
/* defined( LDAP_SLAPI ) */
free
(
(
char
*
)
op
);
memset
(
op
,
0
,
sizeof
(
Operation
)
);
ldap_pvt_thread_mutex_lock
(
&
slap_op_mutex
);
LDAP_STAILQ_INSERT_HEAD
(
&
slap_free_ops
,
op
,
o_next
);
ldap_pvt_thread_mutex_unlock
(
&
slap_op_mutex
);
}
Operation
*
...
...
@@ -75,7 +98,14 @@ slap_op_alloc(
{
Operation
*
op
;
op
=
(
Operation
*
)
ch_calloc
(
1
,
sizeof
(
Operation
)
);
ldap_pvt_thread_mutex_lock
(
&
slap_op_mutex
);
if
(
op
=
LDAP_STAILQ_FIRST
(
&
slap_free_ops
))
{
LDAP_STAILQ_REMOVE_HEAD
(
&
slap_free_ops
,
o_next
);
}
ldap_pvt_thread_mutex_unlock
(
&
slap_op_mutex
);
if
(
!
op
)
op
=
(
Operation
*
)
ch_calloc
(
1
,
sizeof
(
Operation
)
);
op
->
o_ber
=
ber
;
op
->
o_msgid
=
msgid
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment