Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
MallocProject
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vadapalli K Chaitanya
MallocProject
Commits
f50581e6
Commit
f50581e6
authored
Oct 15, 2020
by
Shivaji
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added overwrite in mm2
parent
5d3439c4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
12 additions
and
12 deletions
+12
-12
mm2.c
mm2.c
+12
-12
No files found.
mm2.c
View file @
f50581e6
...
@@ -692,8 +692,8 @@ void merge_free_blocks(block_meta_data_t *first,block_meta_data_t *second)
...
@@ -692,8 +692,8 @@ void merge_free_blocks(block_meta_data_t *first,block_meta_data_t *second)
void
create_new_block_and_insert_into_freelist
(
block_meta_data_t
*
meta_data_block
,
block_meta_data_t
*
free_block
,
uint32_t
final_remain
,
int
c
)
void
create_new_block_and_insert_into_freelist
(
block_meta_data_t
*
meta_data_block
,
block_meta_data_t
*
free_block
,
uint32_t
final_remain
,
int
c
)
{
{
//
block_end_meta_data_t *end_meta_data_block = (block_end_meta_data_t *)end_meta_data_addr(meta_data_block);
block_end_meta_data_t
*
end_meta_data_block
=
(
block_end_meta_data_t
*
)
end_meta_data_addr
(
meta_data_block
);
//
end_meta_data_block->block_size = meta_data_block->block_size;
end_meta_data_block
->
block_size
=
meta_data_block
->
block_size
;
block_meta_data_t
*
new_block
=
(
block_meta_data_t
*
)
NEXT_META_BLOCK_BY_SIZE
(
meta_data_block
);
block_meta_data_t
*
new_block
=
(
block_meta_data_t
*
)
NEXT_META_BLOCK_BY_SIZE
(
meta_data_block
);
if
(
meta_data_block
->
is_free
==
MM_TRUE
)
if
(
meta_data_block
->
is_free
==
MM_TRUE
)
meta_data_block
->
is_free
=
MM_FALSE
;
meta_data_block
->
is_free
=
MM_FALSE
;
...
@@ -708,10 +708,10 @@ void create_new_block_and_insert_into_freelist(block_meta_data_t *meta_data_bloc
...
@@ -708,10 +708,10 @@ void create_new_block_and_insert_into_freelist(block_meta_data_t *meta_data_bloc
assert
(
meta_data_block
->
next_block
->
block_size
==
new_block
->
block_size
);
assert
(
meta_data_block
->
next_block
->
block_size
==
new_block
->
block_size
);
block_end_meta_data_t
*
new_end_meta_data_block
=
(
block_end_meta_data_t
*
)
end_meta_data_addr
(
new_block
);
block_end_meta_data_t
*
new_end_meta_data_block
=
(
block_end_meta_data_t
*
)
end_meta_data_addr
(
new_block
);
new_end_meta_data_block
->
block_size
=
new_block
->
block_size
;
new_end_meta_data_block
->
block_size
=
new_block
->
block_size
;
//
if(new_block->next_block && new_block->next_block->is_free == MM_TRUE)
if
(
new_block
->
next_block
&&
new_block
->
next_block
->
is_free
==
MM_TRUE
)
//
merge_free_blocks(new_block, new_block->next_block);
merge_free_blocks
(
new_block
,
new_block
->
next_block
);
//
if(new_block->prev_block && new_block->prev_block->is_free == MM_TRUE)
if
(
new_block
->
prev_block
&&
new_block
->
prev_block
->
is_free
==
MM_TRUE
)
//
merge_free_blocks(new_block, new_block->prev_block);
merge_free_blocks
(
new_block
,
new_block
->
prev_block
);
insert_node_in_freelist
(
root
,
new_block
);
insert_node_in_freelist
(
root
,
new_block
);
}
}
...
@@ -1080,8 +1080,8 @@ void *mm_realloc(void *ptr, size_t size)
...
@@ -1080,8 +1080,8 @@ void *mm_realloc(void *ptr, size_t size)
uint32_t
final_remain
=
abs
(
TOTAL_COMBINE_SIZE_OF_BLOCKS
(
meta_data_block
->
prev_block
)
-
req_rem_size
);
uint32_t
final_remain
=
abs
(
TOTAL_COMBINE_SIZE_OF_BLOCKS
(
meta_data_block
->
prev_block
)
-
req_rem_size
);
memcpy
((
char
*
)(
meta_data_block
->
prev_block
)
+
ALIGN
(
sizeof
(
block_meta_data_t
)),
(
char
*
)(
meta_data_block
)
+
ALIGN
(
sizeof
(
block_meta_data_t
)),
meta_data_block
->
block_size
);
memcpy
((
char
*
)(
meta_data_block
->
prev_block
)
+
ALIGN
(
sizeof
(
block_meta_data_t
)),
(
char
*
)(
meta_data_block
)
+
ALIGN
(
sizeof
(
block_meta_data_t
)),
meta_data_block
->
block_size
);
block_end_meta_data_t
*
end_meta_data_block
=
(
block_end_meta_data_t
*
)
end_meta_data_addr
(
meta_data_block
);
block_end_meta_data_t
*
end_meta_data_block
=
(
block_end_meta_data_t
*
)
end_meta_data_addr
(
meta_data_block
);
end_meta_data_block
->
block_size
=
meta_data_block
->
block_size
;
//
end_meta_data_block->block_size = meta_data_block->block_size;
meta_data_block
=
meta_data_block
->
prev_block
;
//
meta_data_block = meta_data_block->prev_block;
create_new_block_and_insert_into_freelist
(
meta_data_block
,
meta_data_block
->
next_block
,
final_remain
,
1
);
create_new_block_and_insert_into_freelist
(
meta_data_block
,
meta_data_block
->
next_block
,
final_remain
,
1
);
return
(
void
*
)((
char
*
)
meta_data_block
+
ALIGN
(
sizeof
(
block_meta_data_t
)));
return
(
void
*
)((
char
*
)
meta_data_block
+
ALIGN
(
sizeof
(
block_meta_data_t
)));
}
}
...
@@ -1097,8 +1097,8 @@ void *mm_realloc(void *ptr, size_t size)
...
@@ -1097,8 +1097,8 @@ void *mm_realloc(void *ptr, size_t size)
+
(
uint32_t
)
ALIGN
(
sizeof
(
block_meta_data_t
))
-
req_rem_size
);
+
(
uint32_t
)
ALIGN
(
sizeof
(
block_meta_data_t
))
-
req_rem_size
);
memcpy
((
char
*
)(
meta_data_block
->
prev_block
)
+
ALIGN
(
sizeof
(
block_meta_data_t
)),
(
char
*
)(
meta_data_block
)
+
ALIGN
(
sizeof
(
block_meta_data_t
)),
meta_data_block
->
block_size
);
memcpy
((
char
*
)(
meta_data_block
->
prev_block
)
+
ALIGN
(
sizeof
(
block_meta_data_t
)),
(
char
*
)(
meta_data_block
)
+
ALIGN
(
sizeof
(
block_meta_data_t
)),
meta_data_block
->
block_size
);
block_end_meta_data_t
*
end_meta_data_block
=
(
block_end_meta_data_t
*
)
end_meta_data_addr
(
meta_data_block
);
//
block_end_meta_data_t *end_meta_data_block = (block_end_meta_data_t *)end_meta_data_addr(meta_data_block);
end_meta_data_block
->
block_size
=
meta_data_block
->
block_size
;
//
end_meta_data_block->block_size = meta_data_block->block_size;
meta_data_block
=
meta_data_block
->
prev_block
;
meta_data_block
=
meta_data_block
->
prev_block
;
create_new_block_and_insert_into_freelist
(
meta_data_block
,
meta_data_block
->
next_block
,
final_remain
,
0
);
create_new_block_and_insert_into_freelist
(
meta_data_block
,
meta_data_block
->
next_block
,
final_remain
,
0
);
return
(
void
*
)((
char
*
)
meta_data_block
+
ALIGN
(
sizeof
(
block_meta_data_t
)));
return
(
void
*
)((
char
*
)
meta_data_block
+
ALIGN
(
sizeof
(
block_meta_data_t
)));
...
@@ -1111,8 +1111,8 @@ void *mm_realloc(void *ptr, size_t size)
...
@@ -1111,8 +1111,8 @@ void *mm_realloc(void *ptr, size_t size)
req_rem_size
-=
inter_frag
;
req_rem_size
-=
inter_frag
;
uint32_t
final_remain
=
TOTAL_COMBINE_SIZE_OF_BLOCKS
(
meta_data_block
->
next_block
)
-
req_rem_size
;
uint32_t
final_remain
=
TOTAL_COMBINE_SIZE_OF_BLOCKS
(
meta_data_block
->
next_block
)
-
req_rem_size
;
meta_data_block
->
block_size
=
size
;
meta_data_block
->
block_size
=
size
;
block_end_meta_data_t
*
end_meta_data_block
=
(
block_end_meta_data_t
*
)
end_meta_data_addr
(
meta_data_block
);
//
block_end_meta_data_t *end_meta_data_block = (block_end_meta_data_t *)end_meta_data_addr(meta_data_block);
end_meta_data_block
->
block_size
=
meta_data_block
->
block_size
;
//
end_meta_data_block->block_size = meta_data_block->block_size;
create_new_block_and_insert_into_freelist
(
meta_data_block
,
meta_data_block
->
next_block
,
final_remain
,
1
);
create_new_block_and_insert_into_freelist
(
meta_data_block
,
meta_data_block
->
next_block
,
final_remain
,
1
);
return
(
void
*
)(
meta_data_block
+
1
);
return
(
void
*
)(
meta_data_block
+
1
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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