00001
00002
00003
00004
00005
00006
00007
00008 #include "config.h"
00009
00010 #ifndef lint
00011 static const char revid[] = "$Id: lock__util_8c-source.html,v 1.1 2008/06/08 10:20:06 sebdiaz Exp $";
00012 #endif
00013
00014 #ifndef NO_SYSTEM_INCLUDES
00015 #include <sys/types.h>
00016
00017 #include <string.h>
00018 #endif
00019
00020 #include "db_int.h"
00021 #include "db_page.h"
00022 #include "db_shash.h"
00023 #include "hash.h"
00024 #include "lock.h"
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 int
00037 CDB___lock_cmp(dbt, lock_obj)
00038 const DBT *dbt;
00039 DB_LOCKOBJ *lock_obj;
00040 {
00041 void *obj_data;
00042
00043 obj_data = SH_DBT_PTR(&lock_obj->lockobj);
00044 return (dbt->size == lock_obj->lockobj.size &&
00045 memcmp(dbt->data, obj_data, dbt->size) == 0);
00046 }
00047
00048
00049
00050
00051 int
00052 CDB___lock_locker_cmp(locker, sh_locker)
00053 u_int32_t locker;
00054 DB_LOCKER *sh_locker;
00055 {
00056 return (locker == sh_locker->id);
00057 }
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 #define FAST_HASH(P) { \
00080 u_int32_t __h; \
00081 u_int8_t *__cp, *__hp; \
00082 __hp = (u_int8_t *)&__h; \
00083 __cp = (u_int8_t *)(P); \
00084 __hp[0] = __cp[0] ^ __cp[4]; \
00085 __hp[1] = __cp[1] ^ __cp[5]; \
00086 __hp[2] = __cp[2] ^ __cp[6]; \
00087 __hp[3] = __cp[3] ^ __cp[7]; \
00088 return (__h); \
00089 }
00090
00091
00092
00093
00094
00095
00096 u_int32_t
00097 CDB___lock_ohash(dbt)
00098 const DBT *dbt;
00099 {
00100 if (dbt->size == sizeof(DB_LOCK_ILOCK))
00101 FAST_HASH(dbt->data);
00102
00103 return (CDB___ham_func5(dbt->data, dbt->size));
00104 }
00105
00106
00107
00108
00109
00110
00111 u_int32_t
00112 CDB___lock_lhash(lock_obj)
00113 DB_LOCKOBJ *lock_obj;
00114 {
00115 void *obj_data;
00116
00117 obj_data = SH_DBT_PTR(&lock_obj->lockobj);
00118
00119 if (lock_obj->lockobj.size == sizeof(DB_LOCK_ILOCK))
00120 FAST_HASH(obj_data);
00121
00122 return (CDB___ham_func5(obj_data, lock_obj->lockobj.size));
00123 }
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133 u_int32_t
00134 CDB___lock_locker_hash(locker)
00135 u_int32_t locker;
00136 {
00137 return (locker);
00138 }