malloc 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +2 -2
- data/Rakefile +17 -5
- data/ext/malloc.cc +8 -0
- data/ext/malloc.hh +1 -0
- data/lib/malloc_ext.rb +21 -1
- data/test/tc_malloc.rb +5 -0
- metadata +44 -53
data/COPYING
CHANGED
@@ -80,7 +80,7 @@ modification follow.
|
|
80
80
|
|
81
81
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
82
82
|
works, such as semiconductor masks.
|
83
|
-
|
83
|
+
|
84
84
|
"The Program" refers to any copyrightable work licensed under this
|
85
85
|
License. Each licensee is addressed as "you". "Licensees" and
|
86
86
|
"recipients" may be individuals or organizations.
|
@@ -513,7 +513,7 @@ actual knowledge that, but for the patent license, your conveying the
|
|
513
513
|
covered work in a country, or your recipient's use of the covered work
|
514
514
|
in a country, would infringe one or more identifiable patents in that
|
515
515
|
country that you have reason to believe are valid.
|
516
|
-
|
516
|
+
|
517
517
|
If, pursuant to or in connection with a single transaction or
|
518
518
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
519
519
|
covered work, and grant a patent license to some of the parties
|
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ require 'rake/loaders/makefile'
|
|
7
7
|
require 'rbconfig'
|
8
8
|
|
9
9
|
PKG_NAME = 'malloc'
|
10
|
-
PKG_VERSION = '1.
|
10
|
+
PKG_VERSION = '1.5.0'
|
11
11
|
CFG = RbConfig::CONFIG
|
12
12
|
CXX = ENV[ 'CXX' ] || 'g++'
|
13
13
|
RB_FILES = FileList[ 'lib/**/*.rb' ]
|
@@ -22,6 +22,7 @@ BIN_FILES = [ 'README.md', 'COPYING', '.document', SO_FILE ] +
|
|
22
22
|
RB_FILES + TS_FILES + TC_FILES
|
23
23
|
SUMMARY = %q{Object for raw memory allocation and pointer operations}
|
24
24
|
DESCRIPTION = %q{This Ruby extension defines the class Hornetseye::Malloc. Hornetseye::Malloc#new allows you to allocate memory, using Hornetseye::Malloc#+ one can do pointer manipulation, and Hornetseye::Malloc#read and Hornetseye::Malloc#write provide reading Ruby strings from memory and writing Ruby strings to memory.}
|
25
|
+
LICENSE = 'GPL-3+'
|
25
26
|
AUTHOR = %q{Jan Wedekind}
|
26
27
|
EMAIL = %q{jan@wedesoft.de}
|
27
28
|
HOMEPAGE = %q{http://wedesoft.github.com/malloc/}
|
@@ -81,13 +82,24 @@ end
|
|
81
82
|
begin
|
82
83
|
require 'yard'
|
83
84
|
YARD::Rake::YardocTask.new :yard do |y|
|
84
|
-
y.
|
85
|
-
y.files << FileList[ 'lib/**/*.rb' ]
|
85
|
+
y.files << RB_FILES
|
86
86
|
end
|
87
87
|
rescue LoadError
|
88
88
|
STDERR.puts 'Please install \'yard\' if you want to generate documentation'
|
89
89
|
end
|
90
90
|
|
91
|
+
begin
|
92
|
+
require 'fpm'
|
93
|
+
desc 'Create Debian package'
|
94
|
+
task :deb => :gem do
|
95
|
+
system "fpm -f -s gem -t deb -n #{PKG_NAME} -m '#{AUTHOR} <#{EMAIL}>' " +
|
96
|
+
"--deb-priority optional -d ruby1.9.1 " +
|
97
|
+
"pkg/#{PKG_NAME}-#{PKG_VERSION}.gem"
|
98
|
+
end
|
99
|
+
rescue LoadError
|
100
|
+
STDERR.puts 'Please install \'fpm\' if you want to create Debian packages'
|
101
|
+
end
|
102
|
+
|
91
103
|
Rake::PackageTask.new PKG_NAME, PKG_VERSION do |p|
|
92
104
|
p.need_tar = true
|
93
105
|
p.package_files = PKG_FILES
|
@@ -103,6 +115,7 @@ begin
|
|
103
115
|
s.date = Date.today.to_s
|
104
116
|
s.summary = SUMMARY
|
105
117
|
s.description = DESCRIPTION
|
118
|
+
s.license = LICENSE
|
106
119
|
s.author = AUTHOR
|
107
120
|
s.email = EMAIL
|
108
121
|
s.homepage = HOMEPAGE
|
@@ -113,7 +126,6 @@ begin
|
|
113
126
|
s.extensions = %w{Rakefile}
|
114
127
|
s.has_rdoc = 'yard'
|
115
128
|
s.extra_rdoc_files = []
|
116
|
-
s.rdoc_options = %w{--no-private}
|
117
129
|
s.add_development_dependency %q{rake}
|
118
130
|
end
|
119
131
|
GEM_SOURCE = "#{PKG_NAME}-#{PKG_VERSION}.gem"
|
@@ -124,6 +136,7 @@ begin
|
|
124
136
|
s.date = Date.today.to_s
|
125
137
|
s.summary = SUMMARY
|
126
138
|
s.description = DESCRIPTION
|
139
|
+
s.license = LICENSE
|
127
140
|
s.author = AUTHOR
|
128
141
|
s.email = EMAIL
|
129
142
|
s.homepage = HOMEPAGE
|
@@ -133,7 +146,6 @@ begin
|
|
133
146
|
s.rubyforge_project = %q{hornetseye}
|
134
147
|
s.has_rdoc = 'yard'
|
135
148
|
s.extra_rdoc_files = []
|
136
|
-
s.rdoc_options = %w{--no-private}
|
137
149
|
end
|
138
150
|
GEM_BINARY = "#{PKG_NAME}-#{PKG_VERSION}-#{$BINSPEC.platform}.gem"
|
139
151
|
desc "Build the gem file #{GEM_SOURCE}"
|
data/ext/malloc.cc
CHANGED
@@ -40,6 +40,8 @@ VALUE Malloc::init( VALUE rbModule )
|
|
40
40
|
RUBY_METHOD_FUNC( mallocRead ), 1 );
|
41
41
|
rb_define_method( cRubyClass, "orig_write",
|
42
42
|
RUBY_METHOD_FUNC( mallocWrite ), -1 );
|
43
|
+
rb_define_method( cRubyClass, "to_i",
|
44
|
+
RUBY_METHOD_FUNC( mallocToI ), 0 );
|
43
45
|
return cRubyClass;
|
44
46
|
}
|
45
47
|
|
@@ -105,3 +107,9 @@ VALUE Malloc::mallocWrite( int argc, VALUE *rbArgv, VALUE rbSelf )
|
|
105
107
|
return retVal;
|
106
108
|
}
|
107
109
|
|
110
|
+
VALUE Malloc::mallocToI( VALUE rbSelf )
|
111
|
+
{
|
112
|
+
char *self; Data_Get_Struct( rbSelf, char, self );
|
113
|
+
return LONG2NUM((long)self);
|
114
|
+
}
|
115
|
+
|
data/ext/malloc.hh
CHANGED
data/lib/malloc_ext.rb
CHANGED
@@ -29,7 +29,7 @@ class String
|
|
29
29
|
end
|
30
30
|
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
end
|
34
34
|
|
35
35
|
# Namespace of the Hornetseye project.
|
@@ -60,6 +60,26 @@ module Hornetseye
|
|
60
60
|
|
61
61
|
private :orig_new
|
62
62
|
|
63
|
+
# Create new Malloc object with aligned memory
|
64
|
+
#
|
65
|
+
# Allocate memory with specified alignment
|
66
|
+
#
|
67
|
+
# @example Allocate raw memory
|
68
|
+
# m = Malloc.align 256, 16
|
69
|
+
# # Malloc(256)
|
70
|
+
#
|
71
|
+
# @param [Integer] size Number of bytes to allocate.
|
72
|
+
# @param [Integer] alignment Page size of memory to align with
|
73
|
+
# @return [Malloc] A new Malloc object.
|
74
|
+
#
|
75
|
+
# @see Malloc
|
76
|
+
def align size, alignment
|
77
|
+
offset = alignment - 1
|
78
|
+
retval = Malloc.new size + offset
|
79
|
+
incr = ((retval.to_i + offset) & ~offset) - retval.to_i
|
80
|
+
retval + incr
|
81
|
+
end
|
82
|
+
|
63
83
|
end
|
64
84
|
|
65
85
|
# Number of bytes allocated
|
data/test/tc_malloc.rb
CHANGED
metadata
CHANGED
@@ -1,88 +1,79 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: malloc
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 1
|
7
|
-
- 4
|
8
|
-
- 0
|
9
|
-
version: 1.4.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.5.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Jan Wedekind
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2015-05-04 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rake
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 0
|
30
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
31
22
|
type: :development
|
32
|
-
|
33
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
description: This Ruby extension defines the class Hornetseye::Malloc. Hornetseye::Malloc#new
|
31
|
+
allows you to allocate memory, using Hornetseye::Malloc#+ one can do pointer manipulation,
|
32
|
+
and Hornetseye::Malloc#read and Hornetseye::Malloc#write provide reading Ruby strings
|
33
|
+
from memory and writing Ruby strings to memory.
|
34
34
|
email: jan@wedesoft.de
|
35
35
|
executables: []
|
36
|
-
|
37
|
-
extensions:
|
36
|
+
extensions:
|
38
37
|
- Rakefile
|
39
38
|
extra_rdoc_files: []
|
40
|
-
|
41
|
-
files:
|
39
|
+
files:
|
42
40
|
- Rakefile
|
43
41
|
- README.md
|
44
42
|
- COPYING
|
45
43
|
- .document
|
46
44
|
- lib/malloc_ext.rb
|
47
|
-
- ext/malloc.cc
|
48
45
|
- ext/init.cc
|
46
|
+
- ext/malloc.cc
|
47
|
+
- ext/error.hh
|
49
48
|
- ext/malloc.hh
|
50
49
|
- ext/rubyinc.hh
|
51
|
-
- ext/error.hh
|
52
50
|
- test/ts_malloc.rb
|
53
51
|
- test/tc_malloc.rb
|
54
|
-
has_rdoc: yard
|
55
52
|
homepage: http://wedesoft.github.com/malloc/
|
56
|
-
licenses:
|
57
|
-
|
53
|
+
licenses:
|
54
|
+
- GPL-3+
|
58
55
|
post_install_message:
|
59
|
-
rdoc_options:
|
60
|
-
|
61
|
-
require_paths:
|
56
|
+
rdoc_options: []
|
57
|
+
require_paths:
|
62
58
|
- lib
|
63
59
|
- ext
|
64
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
61
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
|
70
|
-
|
71
|
-
version: "0"
|
72
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
67
|
none: false
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
78
|
-
- 0
|
79
|
-
version: "0"
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
80
72
|
requirements: []
|
81
|
-
|
82
73
|
rubyforge_project: hornetseye
|
83
|
-
rubygems_version: 1.
|
74
|
+
rubygems_version: 1.8.23
|
84
75
|
signing_key:
|
85
76
|
specification_version: 3
|
86
77
|
summary: Object for raw memory allocation and pointer operations
|
87
|
-
test_files:
|
78
|
+
test_files:
|
88
79
|
- test/tc_malloc.rb
|