* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $DragonFly: src/sys/kern/kern_mpipe.c,v 1.9 2006/09/05 00:55:45 dillon Exp $
*/
#include <sys/param.h>
static MALLOC_DEFINE(M_MPIPEARY, "MPipe Array", "Auxillary MPIPE structure");
-static struct lwkt_token mpipe_token = LWKT_TOKEN_MP_INITIALIZER(mpipe_token);
-
/*
* Initialize a malloc pipeline for the specified malloc type and allocation
* size. Create an array to cache up to nom_count buffers and preallocate
++mpipe->free_count;
++mpipe->total_count;
}
+
+ lwkt_token_init(&mpipe->token, 1, "mpipe token");
}
/*
kfree(mpipe->array, M_MPIPEARY);
mpipe->array = NULL;
}
+
+ lwkt_token_uninit(&mpipe->token);
}
/*
void *buf;
int n;
- lwkt_gettoken(&mpipe_token);
+ lwkt_gettoken(&mpipe->token);
if ((n = mpipe->free_count) != 0) {
/*
* Use a free entry if it exists.
if (buf)
++mpipe->total_count;
}
- lwkt_reltoken(&mpipe_token);
+ lwkt_reltoken(&mpipe->token);
return(buf);
}
int n;
int mfailed;
- lwkt_gettoken(&mpipe_token);
+ lwkt_gettoken(&mpipe->token);
mfailed = 0;
for (;;) {
if ((n = mpipe->free_count) != 0) {
}
mfailed = 1;
}
- lwkt_reltoken(&mpipe_token);
+ lwkt_reltoken(&mpipe->token);
return(buf);
}
if (buf == NULL)
return;
- lwkt_gettoken(&mpipe_token);
+ lwkt_gettoken(&mpipe->token);
if ((n = mpipe->free_count) < mpipe->ary_count) {
/*
* Free slot available in free array (LIFO)
++mpipe->free_count;
if ((mpipe->mpflags & (MPF_CACHEDATA|MPF_NOZERO)) == 0)
bzero(buf, mpipe->bytes);
- lwkt_reltoken(&mpipe_token);
+ lwkt_reltoken(&mpipe->token);
/*
* Wakeup anyone blocked in mpipe_alloc_*().
KKASSERT(mpipe->total_count >= mpipe->free_count);
if (mpipe->deconstruct)
mpipe->deconstruct(mpipe, buf);
- lwkt_reltoken(&mpipe_token);
+ lwkt_reltoken(&mpipe->token);
kfree(buf, mpipe->type);
}
}