168957214STrond Norbye /* 268957214STrond Norbye * Copyright (c) <2008>, Sun Microsystems, Inc. 368957214STrond Norbye * All rights reserved. 468957214STrond Norbye * 568957214STrond Norbye * Redistribution and use in source and binary forms, with or without 668957214STrond Norbye * modification, are permitted provided that the following conditions are met: 768957214STrond Norbye * * Redistributions of source code must retain the above copyright 868957214STrond Norbye * notice, this list of conditions and the following disclaimer. 968957214STrond Norbye * * Redistributions in binary form must reproduce the above copyright 1068957214STrond Norbye * notice, this list of conditions and the following disclaimer in the 1168957214STrond Norbye * documentation and/or other materials provided with the distribution. 1268957214STrond Norbye * * Neither the name of the nor the 1368957214STrond Norbye * names of its contributors may be used to endorse or promote products 1468957214STrond Norbye * derived from this software without specific prior written permission. 1568957214STrond Norbye * 1668957214STrond Norbye * THIS SOFTWARE IS PROVIDED BY SUN MICROSYSTEMS, INC. ``AS IS'' AND ANY 1768957214STrond Norbye * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1868957214STrond Norbye * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1968957214STrond Norbye * DISCLAIMED. IN NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY 2068957214STrond Norbye * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 2168957214STrond Norbye * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 2268957214STrond Norbye * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 2368957214STrond Norbye * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2468957214STrond Norbye * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2568957214STrond Norbye * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2668957214STrond Norbye */ 2768957214STrond Norbye provider memcached { 2868957214STrond Norbye /** 29f46e5e0fSMatt Ingenthron * Fired when a connection object is allocated from the connection pool. 3068957214STrond Norbye * @param connid the connection id 3168957214STrond Norbye */ 3268957214STrond Norbye probe conn__allocate(int connid); 3368957214STrond Norbye 3468957214STrond Norbye /** 35f46e5e0fSMatt Ingenthron * Fired when a connection object is released back to the connection pool. 3668957214STrond Norbye * @param connid the connection id 3768957214STrond Norbye */ 3868957214STrond Norbye probe conn__release(int connid); 3968957214STrond Norbye 4068957214STrond Norbye /** 41f46e5e0fSMatt Ingenthron * Fired when a new connection object is created (there are no more 42f46e5e0fSMatt Ingenthron * connection objects in the connection pool). 4368957214STrond Norbye * @param ptr pointer to the connection object 4468957214STrond Norbye */ 4568957214STrond Norbye probe conn__create(void *ptr); 4668957214STrond Norbye 4768957214STrond Norbye /** 48f46e5e0fSMatt Ingenthron * Fired when a connection object is destroyed ("released back to 49f46e5e0fSMatt Ingenthron * the memory subsystem"). 5068957214STrond Norbye * @param ptr pointer to the connection object 5168957214STrond Norbye */ 5268957214STrond Norbye probe conn__destroy(void *ptr); 5368957214STrond Norbye 5468957214STrond Norbye /** 5568957214STrond Norbye * Fired when a connection is dispatched from the "main thread" to a 5668957214STrond Norbye * worker thread. 5768957214STrond Norbye * @param connid the connection id 5868957214STrond Norbye * @param threadid the thread id 5968957214STrond Norbye */ 6068957214STrond Norbye probe conn__dispatch(int connid, int threadid); 6168957214STrond Norbye 6268957214STrond Norbye /** 63f46e5e0fSMatt Ingenthron * Allocate memory from the slab allocator. 6468957214STrond Norbye * @param size the requested size 6568957214STrond Norbye * @param slabclass the allocation will be fulfilled in this class 6668957214STrond Norbye * @param slabsize the size of each item in this class 6768957214STrond Norbye * @param ptr pointer to allocated memory 6868957214STrond Norbye */ 6968957214STrond Norbye probe slabs__allocate(int size, int slabclass, int slabsize, void* ptr); 7068957214STrond Norbye 7168957214STrond Norbye /** 72f46e5e0fSMatt Ingenthron * Failed to allocate memory (out of memory). 7368957214STrond Norbye * @param size the requested size 7468957214STrond Norbye * @param slabclass the class that failed to fulfill the request 7568957214STrond Norbye */ 7668957214STrond Norbye probe slabs__allocate__failed(int size, int slabclass); 7768957214STrond Norbye 7868957214STrond Norbye /** 79f46e5e0fSMatt Ingenthron * Fired when a slab class attempts to allocate more space. 8068957214STrond Norbye * @param slabclass class that needs more memory 8168957214STrond Norbye */ 8268957214STrond Norbye probe slabs__slabclass__allocate(int slabclass); 8368957214STrond Norbye 8468957214STrond Norbye /** 85f46e5e0fSMatt Ingenthron * Failed to allocate memory (out of memory). 8668957214STrond Norbye * @param slabclass the class that failed grab more memory 8768957214STrond Norbye */ 8868957214STrond Norbye probe slabs__slabclass__allocate__failed(int slabclass); 8968957214STrond Norbye 9068957214STrond Norbye /** 91f46e5e0fSMatt Ingenthron * Release memory. 9268957214STrond Norbye * @param size the size of the memory 9368957214STrond Norbye * @param slabclass the class the memory belongs to 9468957214STrond Norbye * @param ptr pointer to the memory to release 9568957214STrond Norbye */ 9668957214STrond Norbye probe slabs__free(int size, int slabclass, void* ptr); 9768957214STrond Norbye 9868957214STrond Norbye /** 9968957214STrond Norbye * Fired when the when we have searched the hash table for a named key. 10068957214STrond Norbye * These two elements provide an insight in how well the hash function 10168957214STrond Norbye * functions. Long traversals are a sign of a less optimal function, 10268957214STrond Norbye * wasting cpu capacity. 10368957214STrond Norbye * 10468957214STrond Norbye * @param key the key searched for 105f46e5e0fSMatt Ingenthron * @param keylen length of the key 10668957214STrond Norbye * @param depth the depth in the list of hash table 10768957214STrond Norbye */ 10880ec0955STrond Norbye probe assoc__find(const char *key, int keylen, int depth); 10968957214STrond Norbye 11068957214STrond Norbye /** 11168957214STrond Norbye * Fired when a new item has been inserted. 11268957214STrond Norbye * @param key the key just inserted 113f46e5e0fSMatt Ingenthron * @param keylen length of the key 114f46e5e0fSMatt Ingenthron * @param nokeys the total number of keys currently stored, 11568957214STrond Norbye * including the key for which insert was called. 11668957214STrond Norbye */ 11780ec0955STrond Norbye probe assoc__insert(const char *key, int keylen, int nokeys); 11868957214STrond Norbye 11968957214STrond Norbye /** 12068957214STrond Norbye * Fired when a new item has been removed. 12168957214STrond Norbye * @param key the key just deleted 122f46e5e0fSMatt Ingenthron * @param keylen length of the key 123f46e5e0fSMatt Ingenthron * @param nokeys the total number of keys currently stored, 12468957214STrond Norbye * excluding the key for which delete was called. 12568957214STrond Norbye */ 12680ec0955STrond Norbye probe assoc__delete(const char *key, int keylen, int nokeys); 12768957214STrond Norbye 12868957214STrond Norbye /** 129f46e5e0fSMatt Ingenthron * Fired when an item is linked into the cache. 13068957214STrond Norbye * @param key the items key 131f46e5e0fSMatt Ingenthron * @param keylen length of the key 13268957214STrond Norbye * @param size the size of the data 13368957214STrond Norbye */ 13480ec0955STrond Norbye probe item__link(const char *key, int keylen, int size); 13568957214STrond Norbye 13668957214STrond Norbye /** 137f46e5e0fSMatt Ingenthron * Fired when an item is deleted. 13868957214STrond Norbye * @param key the items key 139f46e5e0fSMatt Ingenthron * @param keylen length of the key 14068957214STrond Norbye * @param size the size of the data 14168957214STrond Norbye */ 14280ec0955STrond Norbye probe item__unlink(const char *key, int keylen, int size); 14368957214STrond Norbye 14468957214STrond Norbye /** 145f46e5e0fSMatt Ingenthron * Fired when the refcount for an item is reduced. 14668957214STrond Norbye * @param key the items key 147f46e5e0fSMatt Ingenthron * @param keylen length of the key 14868957214STrond Norbye * @param size the size of the data 14968957214STrond Norbye */ 15080ec0955STrond Norbye probe item__remove(const char *key, int keylen, int size); 15168957214STrond Norbye 15268957214STrond Norbye /** 153f46e5e0fSMatt Ingenthron * Fired when the "last refenced" time is updated. 15468957214STrond Norbye * @param key the items key 155f46e5e0fSMatt Ingenthron * @param keylen length of the key 15668957214STrond Norbye * @param size the size of the data 15768957214STrond Norbye */ 15880ec0955STrond Norbye probe item__update(const char *key, int keylen, int size); 15968957214STrond Norbye 16068957214STrond Norbye /** 161f46e5e0fSMatt Ingenthron * Fired when an item is replaced with another item. 16268957214STrond Norbye * @param oldkey the key of the item to replace 16380ec0955STrond Norbye * @param oldkeylen the length of the old key 16468957214STrond Norbye * @param oldsize the size of the old item 16568957214STrond Norbye * @param newkey the key of the new item 16680ec0955STrond Norbye * @param newkeylen the length of the new key 16768957214STrond Norbye * @param newsize the size of the new item 16868957214STrond Norbye */ 16980ec0955STrond Norbye probe item__replace(const char *oldkey, int oldkeylen, int oldsize, 17080ec0955STrond Norbye const char *newkey, int newkeylen, int newsize); 17168957214STrond Norbye 17268957214STrond Norbye /** 173f46e5e0fSMatt Ingenthron * Fired when the processing of a command starts. 17468957214STrond Norbye * @param connid the connection id 17568957214STrond Norbye * @param request the incomming request 17668957214STrond Norbye * @param size the size of the request 17768957214STrond Norbye */ 17868957214STrond Norbye probe process__command__start(int connid, const void *request, int size); 17968957214STrond Norbye 18068957214STrond Norbye /** 181f46e5e0fSMatt Ingenthron * Fired when the processing of a command is done. 18268957214STrond Norbye * @param connid the connection id 18368957214STrond Norbye * @param respnse the response to send back to the client 18468957214STrond Norbye * @param size the size of the response 18568957214STrond Norbye */ 18668957214STrond Norbye probe process__command__end(int connid, const void *response, int size); 18768957214STrond Norbye 18868957214STrond Norbye /** 18968957214STrond Norbye * Fired for a get-command 19068957214STrond Norbye * @param connid connection id 19168957214STrond Norbye * @param key requested key 192f46e5e0fSMatt Ingenthron * @param keylen length of the key 193f46e5e0fSMatt Ingenthron * @param size size of the key's data (or signed int -1 if not found) 19468957214STrond Norbye * @param casid the casid for the item 19568957214STrond Norbye */ 19680ec0955STrond Norbye probe command__get(int connid, const char *key, int keylen, int size, int64_t casid); 19768957214STrond Norbye 19868957214STrond Norbye /** 199f46e5e0fSMatt Ingenthron * Fired for an add-command. 20068957214STrond Norbye * @param connid connection id 20168957214STrond Norbye * @param key requested key 202f46e5e0fSMatt Ingenthron * @param keylen length of the key 203f46e5e0fSMatt Ingenthron * @param size the new size of the key's data (or signed int -1 if 204f46e5e0fSMatt Ingenthron * not found) 20580ec0955STrond Norbye * @param casid the casid for the item 20668957214STrond Norbye */ 20780ec0955STrond Norbye probe command__add(int connid, const char *key, int keylen, int size, int64_t casid); 20868957214STrond Norbye 20968957214STrond Norbye /** 210f46e5e0fSMatt Ingenthron * Fired for a set-command. 21168957214STrond Norbye * @param connid connection id 21268957214STrond Norbye * @param key requested key 213f46e5e0fSMatt Ingenthron * @param keylen length of the key 214f46e5e0fSMatt Ingenthron * @param size the new size of the key's data (or signed int -1 if 215f46e5e0fSMatt Ingenthron * not found) 21680ec0955STrond Norbye * @param casid the casid for the item 21768957214STrond Norbye */ 21880ec0955STrond Norbye probe command__set(int connid, const char *key, int keylen, int size, int64_t casid); 21968957214STrond Norbye 22068957214STrond Norbye /** 221f46e5e0fSMatt Ingenthron * Fired for a replace-command. 22268957214STrond Norbye * @param connid connection id 22368957214STrond Norbye * @param key requested key 224f46e5e0fSMatt Ingenthron * @param keylen length of the key 225f46e5e0fSMatt Ingenthron * @param size the new size of the key's data (or signed int -1 if 226f46e5e0fSMatt Ingenthron * not found) 22780ec0955STrond Norbye * @param casid the casid for the item 22868957214STrond Norbye */ 22980ec0955STrond Norbye probe command__replace(int connid, const char *key, int keylen, int size, int64_t casid); 23068957214STrond Norbye 23168957214STrond Norbye /** 232f46e5e0fSMatt Ingenthron * Fired for a prepend-command. 23368957214STrond Norbye * @param connid connection id 23468957214STrond Norbye * @param key requested key 235f46e5e0fSMatt Ingenthron * @param keylen length of the key 236f46e5e0fSMatt Ingenthron * @param size the new size of the key's data (or signed int -1 if 237f46e5e0fSMatt Ingenthron * not found) 23880ec0955STrond Norbye * @param casid the casid for the item 23968957214STrond Norbye */ 24080ec0955STrond Norbye probe command__prepend(int connid, const char *key, int keylen, int size, int64_t casid); 24168957214STrond Norbye 24268957214STrond Norbye /** 243f46e5e0fSMatt Ingenthron * Fired for an append-command. 24468957214STrond Norbye * @param connid connection id 24568957214STrond Norbye * @param key requested key 246f46e5e0fSMatt Ingenthron * @param keylen length of the key 247f46e5e0fSMatt Ingenthron * @param size the new size of the key's data (or signed int -1 if 248f46e5e0fSMatt Ingenthron * not found) 24980ec0955STrond Norbye * @param casid the casid for the item 25068957214STrond Norbye */ 25180ec0955STrond Norbye probe command__append(int connid, const char *key, int keylen, int size, int64_t casid); 25268957214STrond Norbye 25368957214STrond Norbye /** 254*0abe8869Syuryur * Fired for an touch-command. 255*0abe8869Syuryur * @param connid connection id 256*0abe8869Syuryur * @param key requested key 257*0abe8869Syuryur * @param keylen length of the key 258*0abe8869Syuryur * @param size the new size of the key's data (or signed int -1 if 259*0abe8869Syuryur * not found) 260*0abe8869Syuryur * @param casid the casid for the item 261*0abe8869Syuryur */ 262*0abe8869Syuryur probe command__touch(int connid, const char *key, int keylen, int size, int64_t casid); 263*0abe8869Syuryur 264*0abe8869Syuryur /** 265f46e5e0fSMatt Ingenthron * Fired for a cas-command. 26668957214STrond Norbye * @param connid connection id 26768957214STrond Norbye * @param key requested key 268f46e5e0fSMatt Ingenthron * @param keylen length of the key 269f46e5e0fSMatt Ingenthron * @param size size of the key's data (or signed int -1 if not found) 27068957214STrond Norbye * @param casid the cas id requested 27168957214STrond Norbye */ 27280ec0955STrond Norbye probe command__cas(int connid, const char *key, int keylen, int size, int64_t casid); 27368957214STrond Norbye 27468957214STrond Norbye /** 275f46e5e0fSMatt Ingenthron * Fired for an incr command. 27668957214STrond Norbye * @param connid connection id 27768957214STrond Norbye * @param key the requested key 278f46e5e0fSMatt Ingenthron * @param keylen length of the key 27968957214STrond Norbye * @param val the new value 28068957214STrond Norbye */ 28180ec0955STrond Norbye probe command__incr(int connid, const char *key, int keylen, int64_t val); 28268957214STrond Norbye 28368957214STrond Norbye /** 284f46e5e0fSMatt Ingenthron * Fired for a decr command. 28568957214STrond Norbye * @param connid connection id 28668957214STrond Norbye * @param key the requested key 287f46e5e0fSMatt Ingenthron * @param keylen length of the key 28868957214STrond Norbye * @param val the new value 28968957214STrond Norbye */ 29080ec0955STrond Norbye probe command__decr(int connid, const char *key, int keylen, int64_t val); 29168957214STrond Norbye 29268957214STrond Norbye /** 293f46e5e0fSMatt Ingenthron * Fired for a delete command. 29468957214STrond Norbye * @param connid connection id 29568957214STrond Norbye * @param key the requested key 296f46e5e0fSMatt Ingenthron * @param keylen length of the key 29768957214STrond Norbye */ 29880ec0955STrond Norbye probe command__delete(int connid, const char *key, int keylen); 29968957214STrond Norbye 30068957214STrond Norbye }; 30168957214STrond Norbye 30268957214STrond Norbye #pragma D attributes Unstable/Unstable/Common provider memcached provider 30368957214STrond Norbye #pragma D attributes Private/Private/Common provider memcached module 30468957214STrond Norbye #pragma D attributes Private/Private/Common provider memcached function 30568957214STrond Norbye #pragma D attributes Unstable/Unstable/Common provider memcached name 30668957214STrond Norbye #pragma D attributes Unstable/Unstable/Common provider memcached args 307