5 |
* |
* |
6 |
* Copyright (C) 2005-2007 NTT DATA CORPORATION |
* Copyright (C) 2005-2007 NTT DATA CORPORATION |
7 |
* |
* |
8 |
* Version: 1.5.0-pre 2007/08/06 |
* Version: 1.5.1-pre 2007/10/16 |
9 |
* |
* |
10 |
* This file is applicable to both 2.4.30 and 2.6.11 and later. |
* This file is applicable to both 2.4.30 and 2.6.11 and later. |
11 |
* See README.ccs for ChangeLog. |
* See README.ccs for ChangeLog. |
54 |
{ |
{ |
55 |
char *start = buffer; |
char *start = buffer; |
56 |
char *end = buffer + buflen; |
char *end = buffer + buflen; |
57 |
int is_dir = (dentry->d_inode && S_ISDIR(dentry->d_inode->i_mode)); |
u8 is_dir = (dentry->d_inode && S_ISDIR(dentry->d_inode->i_mode)); |
58 |
|
|
59 |
if (buflen < 256) goto out; |
if (buflen < 256) goto out; |
60 |
|
|
167 |
struct dentry *d_dentry; |
struct dentry *d_dentry; |
168 |
struct vfsmount *d_mnt; |
struct vfsmount *d_mnt; |
169 |
if (!dentry || !mnt || !newname || newname_len <= 0) return -EINVAL; |
if (!dentry || !mnt || !newname || newname_len <= 0) return -EINVAL; |
|
if (!current->fs) { |
|
|
printk("%s: current->fs == NULL for pid=%d\n", __FUNCTION__, current->pid); |
|
|
return -ENOENT; |
|
|
} |
|
170 |
d_dentry = dget(dentry); |
d_dentry = dget(dentry); |
171 |
d_mnt = mntget(mnt); |
d_mnt = mntget(mnt); |
172 |
/***** CRITICAL SECTION START *****/ |
/***** CRITICAL SECTION START *****/ |
391 |
return dynamic_memory_size; |
return dynamic_memory_size; |
392 |
} |
} |
393 |
|
|
394 |
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) |
395 |
|
static int round2(size_t size) |
396 |
|
{ |
397 |
|
#if PAGE_SIZE == 4096 |
398 |
|
size_t bsize = 32; |
399 |
|
#else |
400 |
|
size_t bsize = 64; |
401 |
|
#endif |
402 |
|
while (size > bsize) bsize <<= 1; |
403 |
|
return bsize; |
404 |
|
} |
405 |
|
#endif |
406 |
|
|
407 |
void *ccs_alloc(const size_t size) |
void *ccs_alloc(const size_t size) |
408 |
{ |
{ |
409 |
void *ret = kmalloc(size, GFP_KERNEL); |
void *ret = kmalloc(size, GFP_KERNEL); |
414 |
} else { |
} else { |
415 |
INIT_LIST_HEAD(&new_entry->list); |
INIT_LIST_HEAD(&new_entry->list); |
416 |
new_entry->ptr = ret; |
new_entry->ptr = ret; |
417 |
new_entry->size = size; |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) |
418 |
|
new_entry->size = ksize(ret); |
419 |
|
#else |
420 |
|
new_entry->size = round2(size); |
421 |
|
#endif |
422 |
spin_lock(&cache_list_lock); |
spin_lock(&cache_list_lock); |
423 |
list_add_tail(&new_entry->list, &cache_list); |
list_add_tail(&new_entry->list, &cache_list); |
424 |
dynamic_memory_size += size; |
dynamic_memory_size += new_entry->size; |
425 |
spin_unlock(&cache_list_lock); |
spin_unlock(&cache_list_lock); |
426 |
memset(ret, 0, size); |
memset(ret, 0, size); |
427 |
} |
} |