mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 18:32:45 +00:00 
			
		
		
		
	AK: Rename RetainPtr => RefPtr and Retained => NonnullRefPtr.
This commit is contained in:
		
							parent
							
								
									77b9fa89dd
								
							
						
					
					
						commit
						90b1354688
					
				
					 188 changed files with 562 additions and 562 deletions
				
			
		|  | @ -12,7 +12,7 @@ namespace AK { | ||||||
| 
 | 
 | ||||||
| // String is a convenience wrapper around StringImpl, suitable for passing
 | // String is a convenience wrapper around StringImpl, suitable for passing
 | ||||||
| // around as a value type. It's basically the same as passing around a
 | // around as a value type. It's basically the same as passing around a
 | ||||||
| // RetainPtr<StringImpl>, with a bit of syntactic sugar.
 | // RefPtr<StringImpl>, with a bit of syntactic sugar.
 | ||||||
| //
 | //
 | ||||||
| // Note that StringImpl is an immutable object that cannot shrink or grow.
 | // Note that StringImpl is an immutable object that cannot shrink or grow.
 | ||||||
| // Its allocation size is snugly tailored to the specific string it contains.
 | // Its allocation size is snugly tailored to the specific string it contains.
 | ||||||
|  | @ -74,12 +74,12 @@ public: | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     String(RetainPtr<StringImpl>&& impl) |     String(RefPtr<StringImpl>&& impl) | ||||||
|         : m_impl(move(impl)) |         : m_impl(move(impl)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     String(Retained<StringImpl>&& impl) |     String(NonnullRefPtr<StringImpl>&& impl) | ||||||
|         : m_impl(move(impl)) |         : m_impl(move(impl)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|  | @ -186,7 +186,7 @@ public: | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     bool match_helper(const StringView& mask) const; |     bool match_helper(const StringView& mask) const; | ||||||
|     RetainPtr<StringImpl> m_impl; |     RefPtr<StringImpl> m_impl; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| inline bool StringView::operator==(const String& string) const | inline bool StringView::operator==(const String& string) const | ||||||
|  |  | ||||||
|  | @ -10,12 +10,12 @@ namespace AK { | ||||||
| 
 | 
 | ||||||
| class ByteBufferImpl : public RefCounted<ByteBufferImpl> { | class ByteBufferImpl : public RefCounted<ByteBufferImpl> { | ||||||
| public: | public: | ||||||
|     static Retained<ByteBufferImpl> create_uninitialized(int size); |     static NonnullRefPtr<ByteBufferImpl> create_uninitialized(int size); | ||||||
|     static Retained<ByteBufferImpl> create_zeroed(int); |     static NonnullRefPtr<ByteBufferImpl> create_zeroed(int); | ||||||
|     static Retained<ByteBufferImpl> copy(const void*, int); |     static NonnullRefPtr<ByteBufferImpl> copy(const void*, int); | ||||||
|     static Retained<ByteBufferImpl> wrap(void*, int); |     static NonnullRefPtr<ByteBufferImpl> wrap(void*, int); | ||||||
|     static Retained<ByteBufferImpl> wrap(const void*, int); |     static NonnullRefPtr<ByteBufferImpl> wrap(const void*, int); | ||||||
|     static Retained<ByteBufferImpl> adopt(void*, int); |     static NonnullRefPtr<ByteBufferImpl> adopt(void*, int); | ||||||
| 
 | 
 | ||||||
|     ~ByteBufferImpl() { clear(); } |     ~ByteBufferImpl() { clear(); } | ||||||
| 
 | 
 | ||||||
|  | @ -180,12 +180,12 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     explicit ByteBuffer(RetainPtr<ByteBufferImpl>&& impl) |     explicit ByteBuffer(RefPtr<ByteBufferImpl>&& impl) | ||||||
|         : m_impl(move(impl)) |         : m_impl(move(impl)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     RetainPtr<ByteBufferImpl> m_impl; |     RefPtr<ByteBufferImpl> m_impl; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| inline ByteBufferImpl::ByteBufferImpl(int size) | inline ByteBufferImpl::ByteBufferImpl(int size) | ||||||
|  | @ -227,34 +227,34 @@ inline void ByteBufferImpl::grow(int size) | ||||||
|     kfree(old_data); |     kfree(old_data); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| inline Retained<ByteBufferImpl> ByteBufferImpl::create_uninitialized(int size) | inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::create_uninitialized(int size) | ||||||
| { | { | ||||||
|     return ::adopt(*new ByteBufferImpl(size)); |     return ::adopt(*new ByteBufferImpl(size)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| inline Retained<ByteBufferImpl> ByteBufferImpl::create_zeroed(int size) | inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::create_zeroed(int size) | ||||||
| { | { | ||||||
|     auto buffer = ::adopt(*new ByteBufferImpl(size)); |     auto buffer = ::adopt(*new ByteBufferImpl(size)); | ||||||
|     memset(buffer->pointer(), 0, size); |     memset(buffer->pointer(), 0, size); | ||||||
|     return buffer; |     return buffer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| inline Retained<ByteBufferImpl> ByteBufferImpl::copy(const void* data, int size) | inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::copy(const void* data, int size) | ||||||
| { | { | ||||||
|     return ::adopt(*new ByteBufferImpl(data, size, Copy)); |     return ::adopt(*new ByteBufferImpl(data, size, Copy)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| inline Retained<ByteBufferImpl> ByteBufferImpl::wrap(void* data, int size) | inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::wrap(void* data, int size) | ||||||
| { | { | ||||||
|     return ::adopt(*new ByteBufferImpl(data, size, Wrap)); |     return ::adopt(*new ByteBufferImpl(data, size, Wrap)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| inline Retained<ByteBufferImpl> ByteBufferImpl::wrap(const void* data, int size) | inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::wrap(const void* data, int size) | ||||||
| { | { | ||||||
|     return ::adopt(*new ByteBufferImpl(const_cast<void*>(data), size, Wrap)); |     return ::adopt(*new ByteBufferImpl(const_cast<void*>(data), size, Wrap)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| inline Retained<ByteBufferImpl> ByteBufferImpl::adopt(void* data, int size) | inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::adopt(void* data, int size) | ||||||
| { | { | ||||||
|     return ::adopt(*new ByteBufferImpl(data, size, Adopt)); |     return ::adopt(*new ByteBufferImpl(data, size, Adopt)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -6,65 +6,65 @@ | ||||||
| namespace AK { | namespace AK { | ||||||
| 
 | 
 | ||||||
| template<typename T> | template<typename T> | ||||||
| class RetainPtr { | class RefPtr { | ||||||
| public: | public: | ||||||
|     enum AdoptTag { |     enum AdoptTag { | ||||||
|         Adopt |         Adopt | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     RetainPtr() {} |     RefPtr() {} | ||||||
|     RetainPtr(const T* ptr) |     RefPtr(const T* ptr) | ||||||
|         : m_ptr(const_cast<T*>(ptr)) |         : m_ptr(const_cast<T*>(ptr)) | ||||||
|     { |     { | ||||||
|         ref_if_not_null(m_ptr); |         ref_if_not_null(m_ptr); | ||||||
|     } |     } | ||||||
|     RetainPtr(T* ptr) |     RefPtr(T* ptr) | ||||||
|         : m_ptr(ptr) |         : m_ptr(ptr) | ||||||
|     { |     { | ||||||
|         ref_if_not_null(m_ptr); |         ref_if_not_null(m_ptr); | ||||||
|     } |     } | ||||||
|     RetainPtr(T& object) |     RefPtr(T& object) | ||||||
|         : m_ptr(&object) |         : m_ptr(&object) | ||||||
|     { |     { | ||||||
|         m_ptr->ref(); |         m_ptr->ref(); | ||||||
|     } |     } | ||||||
|     RetainPtr(const T& object) |     RefPtr(const T& object) | ||||||
|         : m_ptr(const_cast<T*>(&object)) |         : m_ptr(const_cast<T*>(&object)) | ||||||
|     { |     { | ||||||
|         m_ptr->ref(); |         m_ptr->ref(); | ||||||
|     } |     } | ||||||
|     RetainPtr(AdoptTag, T& object) |     RefPtr(AdoptTag, T& object) | ||||||
|         : m_ptr(&object) |         : m_ptr(&object) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     RetainPtr(RetainPtr& other) |     RefPtr(RefPtr& other) | ||||||
|         : m_ptr(other.copy_ref().leak_ref()) |         : m_ptr(other.copy_ref().leak_ref()) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     RetainPtr(RetainPtr&& other) |     RefPtr(RefPtr&& other) | ||||||
|         : m_ptr(other.leak_ref()) |         : m_ptr(other.leak_ref()) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     RetainPtr(Retained<U>&& other) |     RefPtr(NonnullRefPtr<U>&& other) | ||||||
|         : m_ptr(static_cast<T*>(&other.leak_ref())) |         : m_ptr(static_cast<T*>(&other.leak_ref())) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     RetainPtr(RetainPtr<U>&& other) |     RefPtr(RefPtr<U>&& other) | ||||||
|         : m_ptr(static_cast<T*>(other.leak_ref())) |         : m_ptr(static_cast<T*>(other.leak_ref())) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     RetainPtr(const RetainPtr& other) |     RefPtr(const RefPtr& other) | ||||||
|         : m_ptr(const_cast<RetainPtr&>(other).copy_ref().leak_ref()) |         : m_ptr(const_cast<RefPtr&>(other).copy_ref().leak_ref()) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     RetainPtr(const RetainPtr<U>& other) |     RefPtr(const RefPtr<U>& other) | ||||||
|         : m_ptr(const_cast<RetainPtr<U>&>(other).copy_ref().leak_ref()) |         : m_ptr(const_cast<RefPtr<U>&>(other).copy_ref().leak_ref()) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     ~RetainPtr() |     ~RefPtr() | ||||||
|     { |     { | ||||||
|         clear(); |         clear(); | ||||||
| #ifdef SANITIZE_PTRS | #ifdef SANITIZE_PTRS | ||||||
|  | @ -74,9 +74,9 @@ public: | ||||||
|             m_ptr = (T*)(0xe0e0e0e0); |             m_ptr = (T*)(0xe0e0e0e0); | ||||||
| #endif | #endif | ||||||
|     } |     } | ||||||
|     RetainPtr(std::nullptr_t) {} |     RefPtr(std::nullptr_t) {} | ||||||
| 
 | 
 | ||||||
|     RetainPtr& operator=(RetainPtr&& other) |     RefPtr& operator=(RefPtr&& other) | ||||||
|     { |     { | ||||||
|         if (this != &other) { |         if (this != &other) { | ||||||
|             deref_if_not_null(m_ptr); |             deref_if_not_null(m_ptr); | ||||||
|  | @ -86,7 +86,7 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     RetainPtr& operator=(RetainPtr<U>&& other) |     RefPtr& operator=(RefPtr<U>&& other) | ||||||
|     { |     { | ||||||
|         if (this != static_cast<void*>(&other)) { |         if (this != static_cast<void*>(&other)) { | ||||||
|             deref_if_not_null(m_ptr); |             deref_if_not_null(m_ptr); | ||||||
|  | @ -96,7 +96,7 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     RetainPtr& operator=(Retained<U>&& other) |     RefPtr& operator=(NonnullRefPtr<U>&& other) | ||||||
|     { |     { | ||||||
|         deref_if_not_null(m_ptr); |         deref_if_not_null(m_ptr); | ||||||
|         m_ptr = &other.leak_ref(); |         m_ptr = &other.leak_ref(); | ||||||
|  | @ -104,7 +104,7 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     RetainPtr& operator=(const Retained<U>& other) |     RefPtr& operator=(const NonnullRefPtr<U>& other) | ||||||
|     { |     { | ||||||
|         if (m_ptr != other.ptr()) |         if (m_ptr != other.ptr()) | ||||||
|             deref_if_not_null(m_ptr); |             deref_if_not_null(m_ptr); | ||||||
|  | @ -115,7 +115,7 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     RetainPtr& operator=(const RetainPtr<U>& other) |     RefPtr& operator=(const RefPtr<U>& other) | ||||||
|     { |     { | ||||||
|         if (m_ptr != other.ptr()) |         if (m_ptr != other.ptr()) | ||||||
|             deref_if_not_null(m_ptr); |             deref_if_not_null(m_ptr); | ||||||
|  | @ -124,7 +124,7 @@ public: | ||||||
|         return *this; |         return *this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     RetainPtr& operator=(const T* ptr) |     RefPtr& operator=(const T* ptr) | ||||||
|     { |     { | ||||||
|         if (m_ptr != ptr) |         if (m_ptr != ptr) | ||||||
|             deref_if_not_null(m_ptr); |             deref_if_not_null(m_ptr); | ||||||
|  | @ -133,7 +133,7 @@ public: | ||||||
|         return *this; |         return *this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     RetainPtr& operator=(const T& object) |     RefPtr& operator=(const T& object) | ||||||
|     { |     { | ||||||
|         if (m_ptr != &object) |         if (m_ptr != &object) | ||||||
|             deref_if_not_null(m_ptr); |             deref_if_not_null(m_ptr); | ||||||
|  | @ -142,15 +142,15 @@ public: | ||||||
|         return *this; |         return *this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     RetainPtr& operator=(std::nullptr_t) |     RefPtr& operator=(std::nullptr_t) | ||||||
|     { |     { | ||||||
|         clear(); |         clear(); | ||||||
|         return *this; |         return *this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     RetainPtr copy_ref() const |     RefPtr copy_ref() const | ||||||
|     { |     { | ||||||
|         return RetainPtr(m_ptr); |         return RefPtr(m_ptr); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void clear() |     void clear() | ||||||
|  | @ -185,11 +185,11 @@ public: | ||||||
|     bool operator==(std::nullptr_t) const { return !m_ptr; } |     bool operator==(std::nullptr_t) const { return !m_ptr; } | ||||||
|     bool operator!=(std::nullptr_t) const { return m_ptr; } |     bool operator!=(std::nullptr_t) const { return m_ptr; } | ||||||
| 
 | 
 | ||||||
|     bool operator==(const RetainPtr& other) const { return m_ptr == other.m_ptr; } |     bool operator==(const RefPtr& other) const { return m_ptr == other.m_ptr; } | ||||||
|     bool operator!=(const RetainPtr& other) const { return m_ptr != other.m_ptr; } |     bool operator!=(const RefPtr& other) const { return m_ptr != other.m_ptr; } | ||||||
| 
 | 
 | ||||||
|     bool operator==(RetainPtr& other) { return m_ptr == other.m_ptr; } |     bool operator==(RefPtr& other) { return m_ptr == other.m_ptr; } | ||||||
|     bool operator!=(RetainPtr& other) { return m_ptr != other.m_ptr; } |     bool operator!=(RefPtr& other) { return m_ptr != other.m_ptr; } | ||||||
| 
 | 
 | ||||||
|     bool operator==(const T* other) const { return m_ptr == other; } |     bool operator==(const T* other) const { return m_ptr == other; } | ||||||
|     bool operator!=(const T* other) const { return m_ptr != other; } |     bool operator!=(const T* other) const { return m_ptr != other; } | ||||||
|  | @ -205,4 +205,4 @@ private: | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| using AK::RetainPtr; | using AK::RefPtr; | ||||||
|  |  | ||||||
|  | @ -32,58 +32,58 @@ inline void deref_if_not_null(T* ptr) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| template<typename T> | template<typename T> | ||||||
| class CONSUMABLE(unconsumed) Retained { | class CONSUMABLE(unconsumed) NonnullRefPtr { | ||||||
| public: | public: | ||||||
|     enum AdoptTag { |     enum AdoptTag { | ||||||
|         Adopt |         Adopt | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     RETURN_TYPESTATE(unconsumed) |     RETURN_TYPESTATE(unconsumed) | ||||||
|     Retained(const T& object) |     NonnullRefPtr(const T& object) | ||||||
|         : m_ptr(const_cast<T*>(&object)) |         : m_ptr(const_cast<T*>(&object)) | ||||||
|     { |     { | ||||||
|         m_ptr->ref(); |         m_ptr->ref(); | ||||||
|     } |     } | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     RETURN_TYPESTATE(unconsumed) |     RETURN_TYPESTATE(unconsumed) | ||||||
|     Retained(const U& object) |     NonnullRefPtr(const U& object) | ||||||
|         : m_ptr(&const_cast<T&>(static_cast<const T&>(object))) |         : m_ptr(&const_cast<T&>(static_cast<const T&>(object))) | ||||||
|     { |     { | ||||||
|         m_ptr->ref(); |         m_ptr->ref(); | ||||||
|     } |     } | ||||||
|     RETURN_TYPESTATE(unconsumed) |     RETURN_TYPESTATE(unconsumed) | ||||||
|     Retained(AdoptTag, T& object) |     NonnullRefPtr(AdoptTag, T& object) | ||||||
|         : m_ptr(&object) |         : m_ptr(&object) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     RETURN_TYPESTATE(unconsumed) |     RETURN_TYPESTATE(unconsumed) | ||||||
|     Retained(Retained& other) |     NonnullRefPtr(NonnullRefPtr& other) | ||||||
|         : m_ptr(&other.copy_ref().leak_ref()) |         : m_ptr(&other.copy_ref().leak_ref()) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     RETURN_TYPESTATE(unconsumed) |     RETURN_TYPESTATE(unconsumed) | ||||||
|     Retained(Retained&& other) |     NonnullRefPtr(NonnullRefPtr&& other) | ||||||
|         : m_ptr(&other.leak_ref()) |         : m_ptr(&other.leak_ref()) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     RETURN_TYPESTATE(unconsumed) |     RETURN_TYPESTATE(unconsumed) | ||||||
|     Retained(Retained<U>&& other) |     NonnullRefPtr(NonnullRefPtr<U>&& other) | ||||||
|         : m_ptr(static_cast<T*>(&other.leak_ref())) |         : m_ptr(static_cast<T*>(&other.leak_ref())) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     RETURN_TYPESTATE(unconsumed) |     RETURN_TYPESTATE(unconsumed) | ||||||
|     Retained(const Retained& other) |     NonnullRefPtr(const NonnullRefPtr& other) | ||||||
|         : m_ptr(&const_cast<Retained&>(other).copy_ref().leak_ref()) |         : m_ptr(&const_cast<NonnullRefPtr&>(other).copy_ref().leak_ref()) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     RETURN_TYPESTATE(unconsumed) |     RETURN_TYPESTATE(unconsumed) | ||||||
|     Retained(const Retained<U>& other) |     NonnullRefPtr(const NonnullRefPtr<U>& other) | ||||||
|         : m_ptr(&const_cast<Retained<U>&>(other).copy_ref().leak_ref()) |         : m_ptr(&const_cast<NonnullRefPtr<U>&>(other).copy_ref().leak_ref()) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     ~Retained() |     ~NonnullRefPtr() | ||||||
|     { |     { | ||||||
|         deref_if_not_null(m_ptr); |         deref_if_not_null(m_ptr); | ||||||
|         m_ptr = nullptr; |         m_ptr = nullptr; | ||||||
|  | @ -96,7 +96,7 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     CALLABLE_WHEN(unconsumed) |     CALLABLE_WHEN(unconsumed) | ||||||
|     Retained& operator=(Retained&& other) |     NonnullRefPtr& operator=(NonnullRefPtr&& other) | ||||||
|     { |     { | ||||||
|         if (this != &other) { |         if (this != &other) { | ||||||
|             deref_if_not_null(m_ptr); |             deref_if_not_null(m_ptr); | ||||||
|  | @ -107,7 +107,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     template<typename U> |     template<typename U> | ||||||
|     CALLABLE_WHEN(unconsumed) |     CALLABLE_WHEN(unconsumed) | ||||||
|     Retained& operator=(Retained<U>&& other) |     NonnullRefPtr& operator=(NonnullRefPtr<U>&& other) | ||||||
|     { |     { | ||||||
|         if (this != static_cast<void*>(&other)) { |         if (this != static_cast<void*>(&other)) { | ||||||
|             deref_if_not_null(m_ptr); |             deref_if_not_null(m_ptr); | ||||||
|  | @ -117,7 +117,7 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     CALLABLE_WHEN(unconsumed) |     CALLABLE_WHEN(unconsumed) | ||||||
|     Retained& operator=(T& object) |     NonnullRefPtr& operator=(T& object) | ||||||
|     { |     { | ||||||
|         if (m_ptr != &object) |         if (m_ptr != &object) | ||||||
|             deref_if_not_null(m_ptr); |             deref_if_not_null(m_ptr); | ||||||
|  | @ -127,9 +127,9 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     CALLABLE_WHEN(unconsumed) |     CALLABLE_WHEN(unconsumed) | ||||||
|     Retained copy_ref() const |     NonnullRefPtr copy_ref() const | ||||||
|     { |     { | ||||||
|         return Retained(*m_ptr); |         return NonnullRefPtr(*m_ptr); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     CALLABLE_WHEN(unconsumed) |     CALLABLE_WHEN(unconsumed) | ||||||
|  | @ -208,18 +208,18 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     Retained() {} |     NonnullRefPtr() {} | ||||||
| 
 | 
 | ||||||
|     T* m_ptr { nullptr }; |     T* m_ptr { nullptr }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| template<typename T> | template<typename T> | ||||||
| inline Retained<T> adopt(T& object) | inline NonnullRefPtr<T> adopt(T& object) | ||||||
| { | { | ||||||
|     return Retained<T>(Retained<T>::Adopt, object); |     return NonnullRefPtr<T>(NonnullRefPtr<T>::Adopt, object); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| using AK::adopt; | using AK::adopt; | ||||||
| using AK::Retained; | using AK::NonnullRefPtr; | ||||||
|  |  | ||||||
|  | @ -60,7 +60,7 @@ static inline int allocation_size_for_stringimpl(int length) | ||||||
|     return sizeof(StringImpl) + (sizeof(char) * length) + sizeof(char); |     return sizeof(StringImpl) + (sizeof(char) * length) + sizeof(char); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<StringImpl> StringImpl::create_uninitialized(int length, char*& buffer) | NonnullRefPtr<StringImpl> StringImpl::create_uninitialized(int length, char*& buffer) | ||||||
| { | { | ||||||
|     ASSERT(length); |     ASSERT(length); | ||||||
|     void* slot = kmalloc(allocation_size_for_stringimpl(length)); |     void* slot = kmalloc(allocation_size_for_stringimpl(length)); | ||||||
|  | @ -71,7 +71,7 @@ Retained<StringImpl> StringImpl::create_uninitialized(int length, char*& buffer) | ||||||
|     return new_stringimpl; |     return new_stringimpl; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<StringImpl> StringImpl::create(const char* cstring, int length, ShouldChomp should_chomp) | RefPtr<StringImpl> StringImpl::create(const char* cstring, int length, ShouldChomp should_chomp) | ||||||
| { | { | ||||||
|     if (!cstring) |     if (!cstring) | ||||||
|         return nullptr; |         return nullptr; | ||||||
|  | @ -99,7 +99,7 @@ RetainPtr<StringImpl> StringImpl::create(const char* cstring, int length, Should | ||||||
|     return new_stringimpl; |     return new_stringimpl; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<StringImpl> StringImpl::create(const char* cstring, ShouldChomp shouldChomp) | RefPtr<StringImpl> StringImpl::create(const char* cstring, ShouldChomp shouldChomp) | ||||||
| { | { | ||||||
|     if (!cstring) |     if (!cstring) | ||||||
|         return nullptr; |         return nullptr; | ||||||
|  | @ -131,7 +131,7 @@ static inline char to_ascii_uppercase(char c) | ||||||
|     return c; |     return c; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<StringImpl> StringImpl::to_lowercase() const | NonnullRefPtr<StringImpl> StringImpl::to_lowercase() const | ||||||
| { | { | ||||||
|     for (int i = 0; i < m_length; ++i) { |     for (int i = 0; i < m_length; ++i) { | ||||||
|         if (!is_ascii_lowercase(characters()[i])) |         if (!is_ascii_lowercase(characters()[i])) | ||||||
|  | @ -147,7 +147,7 @@ slow_path: | ||||||
|     return lowercased; |     return lowercased; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<StringImpl> StringImpl::to_uppercase() const | NonnullRefPtr<StringImpl> StringImpl::to_uppercase() const | ||||||
| { | { | ||||||
|     for (int i = 0; i < m_length; ++i) { |     for (int i = 0; i < m_length; ++i) { | ||||||
|         if (!is_ascii_uppercase(characters()[i])) |         if (!is_ascii_uppercase(characters()[i])) | ||||||
|  |  | ||||||
|  | @ -14,11 +14,11 @@ enum ShouldChomp { | ||||||
| 
 | 
 | ||||||
| class StringImpl : public RefCounted<StringImpl> { | class StringImpl : public RefCounted<StringImpl> { | ||||||
| public: | public: | ||||||
|     static Retained<StringImpl> create_uninitialized(int length, char*& buffer); |     static NonnullRefPtr<StringImpl> create_uninitialized(int length, char*& buffer); | ||||||
|     static RetainPtr<StringImpl> create(const char* cstring, ShouldChomp = NoChomp); |     static RefPtr<StringImpl> create(const char* cstring, ShouldChomp = NoChomp); | ||||||
|     static RetainPtr<StringImpl> create(const char* cstring, int length, ShouldChomp = NoChomp); |     static RefPtr<StringImpl> create(const char* cstring, int length, ShouldChomp = NoChomp); | ||||||
|     Retained<StringImpl> to_lowercase() const; |     NonnullRefPtr<StringImpl> to_lowercase() const; | ||||||
|     Retained<StringImpl> to_uppercase() const; |     NonnullRefPtr<StringImpl> to_uppercase() const; | ||||||
| 
 | 
 | ||||||
|     void operator delete(void* ptr) |     void operator delete(void* ptr) | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -50,12 +50,12 @@ public: | ||||||
|     bool operator==(const OwnPtr<T>& other) const { return ptr() == other.ptr(); } |     bool operator==(const OwnPtr<T>& other) const { return ptr() == other.ptr(); } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     WeakPtr(RetainPtr<WeakLink<T>>&& link) |     WeakPtr(RefPtr<WeakLink<T>>&& link) | ||||||
|         : m_link(move(link)) |         : m_link(move(link)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     RetainPtr<WeakLink<T>> m_link; |     RefPtr<WeakLink<T>> m_link; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| template<typename T> | template<typename T> | ||||||
|  |  | ||||||
|  | @ -45,7 +45,7 @@ protected: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     RetainPtr<WeakLink<T>> m_link; |     RefPtr<WeakLink<T>> m_link; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -44,7 +44,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     ViewMode m_view_mode { Invalid }; |     ViewMode m_view_mode { Invalid }; | ||||||
| 
 | 
 | ||||||
|     Retained<GDirectoryModel> m_model; |     NonnullRefPtr<GDirectoryModel> m_model; | ||||||
|     int m_path_history_position { 0 }; |     int m_path_history_position { 0 }; | ||||||
|     Vector<String> m_path_history; |     Vector<String> m_path_history; | ||||||
|     void add_path_to_history(const StringView& path); |     void add_path_to_history(const StringView& path); | ||||||
|  |  | ||||||
|  | @ -103,8 +103,8 @@ int main(int argc, char** argv) | ||||||
|         } |         } | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<GAction> view_as_table_action; |     RefPtr<GAction> view_as_table_action; | ||||||
|     RetainPtr<GAction> view_as_icons_action; |     RefPtr<GAction> view_as_icons_action; | ||||||
| 
 | 
 | ||||||
|     view_as_table_action = GAction::create("Table view", { Mod_Ctrl, KeyCode::Key_L }, GraphicsBitmap::load_from_file("/res/icons/16x16/table-view.png"), [&](const GAction&) { |     view_as_table_action = GAction::create("Table view", { Mod_Ctrl, KeyCode::Key_L }, GraphicsBitmap::load_from_file("/res/icons/16x16/table-view.png"), [&](const GAction&) { | ||||||
|         directory_view->set_view_mode(DirectoryView::ViewMode::List); |         directory_view->set_view_mode(DirectoryView::ViewMode::List); | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ | ||||||
| #include <LibGUI/GTextBox.h> | #include <LibGUI/GTextBox.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| 
 | 
 | ||||||
| FontEditorWidget::FontEditorWidget(const String& path, RetainPtr<Font>&& edited_font, GWidget* parent) | FontEditorWidget::FontEditorWidget(const String& path, RefPtr<Font>&& edited_font, GWidget* parent) | ||||||
|     : GWidget(parent) |     : GWidget(parent) | ||||||
|     , m_edited_font(move(edited_font)) |     , m_edited_font(move(edited_font)) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -9,11 +9,11 @@ class GTextBox; | ||||||
| 
 | 
 | ||||||
| class FontEditorWidget final : public GWidget { | class FontEditorWidget final : public GWidget { | ||||||
| public: | public: | ||||||
|     FontEditorWidget(const String& path, RetainPtr<Font>&&, GWidget* parent = nullptr); |     FontEditorWidget(const String& path, RefPtr<Font>&&, GWidget* parent = nullptr); | ||||||
|     virtual ~FontEditorWidget() override; |     virtual ~FontEditorWidget() override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     RetainPtr<Font> m_edited_font; |     RefPtr<Font> m_edited_font; | ||||||
| 
 | 
 | ||||||
|     GlyphMapWidget* m_glyph_map_widget { nullptr }; |     GlyphMapWidget* m_glyph_map_widget { nullptr }; | ||||||
|     GlyphEditorWidget* m_glyph_editor_widget { nullptr }; |     GlyphEditorWidget* m_glyph_editor_widget { nullptr }; | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     void draw_at_mouse(const GMouseEvent&); |     void draw_at_mouse(const GMouseEvent&); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Font> m_font; |     RefPtr<Font> m_font; | ||||||
|     byte m_glyph { 0 }; |     byte m_glyph { 0 }; | ||||||
|     int m_scale { 10 }; |     int m_scale { 10 }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -30,7 +30,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     Rect get_outer_rect(byte glyph) const; |     Rect get_outer_rect(byte glyph) const; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Font> m_font; |     RefPtr<Font> m_font; | ||||||
|     int m_rows { 8 }; |     int m_rows { 8 }; | ||||||
|     int m_horizontal_spacing { 2 }; |     int m_horizontal_spacing { 2 }; | ||||||
|     int m_vertical_spacing { 2 }; |     int m_vertical_spacing { 2 }; | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ int main(int argc, char** argv) | ||||||
| { | { | ||||||
|     GApplication app(argc, argv); |     GApplication app(argc, argv); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Font> edited_font; |     RefPtr<Font> edited_font; | ||||||
|     String path; |     String path; | ||||||
| 
 | 
 | ||||||
|     if (argc == 2) { |     if (argc == 2) { | ||||||
|  |  | ||||||
|  | @ -24,10 +24,10 @@ private: | ||||||
|     IRCClient m_client; |     IRCClient m_client; | ||||||
|     GStackWidget* m_container { nullptr }; |     GStackWidget* m_container { nullptr }; | ||||||
|     GTableView* m_window_list { nullptr }; |     GTableView* m_window_list { nullptr }; | ||||||
|     RetainPtr<GAction> m_join_action; |     RefPtr<GAction> m_join_action; | ||||||
|     RetainPtr<GAction> m_part_action; |     RefPtr<GAction> m_part_action; | ||||||
|     RetainPtr<GAction> m_whois_action; |     RefPtr<GAction> m_whois_action; | ||||||
|     RetainPtr<GAction> m_open_query_action; |     RefPtr<GAction> m_open_query_action; | ||||||
|     RetainPtr<GAction> m_close_query_action; |     RefPtr<GAction> m_close_query_action; | ||||||
|     RetainPtr<GAction> m_change_nick_action; |     RefPtr<GAction> m_change_nick_action; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ IRCChannel::~IRCChannel() | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<IRCChannel> IRCChannel::create(IRCClient& client, const String& name) | NonnullRefPtr<IRCChannel> IRCChannel::create(IRCClient& client, const String& name) | ||||||
| { | { | ||||||
|     return adopt(*new IRCChannel(client, name)); |     return adopt(*new IRCChannel(client, name)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ class IRCWindow; | ||||||
| 
 | 
 | ||||||
| class IRCChannel : public RefCounted<IRCChannel> { | class IRCChannel : public RefCounted<IRCChannel> { | ||||||
| public: | public: | ||||||
|     static Retained<IRCChannel> create(IRCClient&, const String&); |     static NonnullRefPtr<IRCChannel> create(IRCClient&, const String&); | ||||||
|     ~IRCChannel(); |     ~IRCChannel(); | ||||||
| 
 | 
 | ||||||
|     bool is_open() const { return m_open; } |     bool is_open() const { return m_open; } | ||||||
|  | @ -64,7 +64,7 @@ private: | ||||||
|     Vector<Member> m_members; |     Vector<Member> m_members; | ||||||
|     bool m_open { false }; |     bool m_open { false }; | ||||||
| 
 | 
 | ||||||
|     Retained<IRCLogBuffer> m_log; |     NonnullRefPtr<IRCLogBuffer> m_log; | ||||||
|     Retained<IRCChannelMemberListModel> m_member_model; |     NonnullRefPtr<IRCChannelMemberListModel> m_member_model; | ||||||
|     IRCWindow* m_window { nullptr }; |     IRCWindow* m_window { nullptr }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ public: | ||||||
|     enum Column { |     enum Column { | ||||||
|         Name |         Name | ||||||
|     }; |     }; | ||||||
|     static Retained<IRCChannelMemberListModel> create(IRCChannel& channel) { return adopt(*new IRCChannelMemberListModel(channel)); } |     static NonnullRefPtr<IRCChannelMemberListModel> create(IRCChannel& channel) { return adopt(*new IRCChannelMemberListModel(channel)); } | ||||||
|     virtual ~IRCChannelMemberListModel() override; |     virtual ~IRCChannelMemberListModel() override; | ||||||
| 
 | 
 | ||||||
|     virtual int row_count(const GModelIndex&) const override; |     virtual int row_count(const GModelIndex&) const override; | ||||||
|  |  | ||||||
|  | @ -120,14 +120,14 @@ private: | ||||||
| 
 | 
 | ||||||
|     String m_nickname; |     String m_nickname; | ||||||
|     OwnPtr<CNotifier> m_notifier; |     OwnPtr<CNotifier> m_notifier; | ||||||
|     HashMap<String, RetainPtr<IRCChannel>> m_channels; |     HashMap<String, RefPtr<IRCChannel>> m_channels; | ||||||
|     HashMap<String, RetainPtr<IRCQuery>> m_queries; |     HashMap<String, RefPtr<IRCQuery>> m_queries; | ||||||
| 
 | 
 | ||||||
|     Vector<IRCWindow*> m_windows; |     Vector<IRCWindow*> m_windows; | ||||||
| 
 | 
 | ||||||
|     IRCWindow* m_server_subwindow { nullptr }; |     IRCWindow* m_server_subwindow { nullptr }; | ||||||
| 
 | 
 | ||||||
|     Retained<IRCWindowListModel> m_client_window_list_model; |     NonnullRefPtr<IRCWindowListModel> m_client_window_list_model; | ||||||
|     Retained<IRCLogBuffer> m_log; |     NonnullRefPtr<IRCLogBuffer> m_log; | ||||||
|     Retained<CConfigFile> m_config; |     NonnullRefPtr<CConfigFile> m_config; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <time.h> | #include <time.h> | ||||||
| 
 | 
 | ||||||
| Retained<IRCLogBuffer> IRCLogBuffer::create() | NonnullRefPtr<IRCLogBuffer> IRCLogBuffer::create() | ||||||
| { | { | ||||||
|     return adopt(*new IRCLogBuffer); |     return adopt(*new IRCLogBuffer); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ class IRCLogBufferModel; | ||||||
| 
 | 
 | ||||||
| class IRCLogBuffer : public RefCounted<IRCLogBuffer> { | class IRCLogBuffer : public RefCounted<IRCLogBuffer> { | ||||||
| public: | public: | ||||||
|     static Retained<IRCLogBuffer> create(); |     static NonnullRefPtr<IRCLogBuffer> create(); | ||||||
|     ~IRCLogBuffer(); |     ~IRCLogBuffer(); | ||||||
| 
 | 
 | ||||||
|     struct Message { |     struct Message { | ||||||
|  | @ -32,6 +32,6 @@ public: | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     IRCLogBuffer(); |     IRCLogBuffer(); | ||||||
|     Retained<IRCLogBufferModel> m_model; |     NonnullRefPtr<IRCLogBufferModel> m_model; | ||||||
|     CircularQueue<Message, 1000> m_messages; |     CircularQueue<Message, 1000> m_messages; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <time.h> | #include <time.h> | ||||||
| 
 | 
 | ||||||
| IRCLogBufferModel::IRCLogBufferModel(Retained<IRCLogBuffer>&& log_buffer) | IRCLogBufferModel::IRCLogBufferModel(NonnullRefPtr<IRCLogBuffer>&& log_buffer) | ||||||
|     : m_log_buffer(move(log_buffer)) |     : m_log_buffer(move(log_buffer)) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ public: | ||||||
|         __Count, |         __Count, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     static Retained<IRCLogBufferModel> create(Retained<IRCLogBuffer>&& log_buffer) { return adopt(*new IRCLogBufferModel(move(log_buffer))); } |     static NonnullRefPtr<IRCLogBufferModel> create(NonnullRefPtr<IRCLogBuffer>&& log_buffer) { return adopt(*new IRCLogBufferModel(move(log_buffer))); } | ||||||
|     virtual ~IRCLogBufferModel() override; |     virtual ~IRCLogBufferModel() override; | ||||||
| 
 | 
 | ||||||
|     virtual int row_count(const GModelIndex&) const override; |     virtual int row_count(const GModelIndex&) const override; | ||||||
|  | @ -24,7 +24,7 @@ public: | ||||||
|     virtual void update() override; |     virtual void update() override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     explicit IRCLogBufferModel(Retained<IRCLogBuffer>&&); |     explicit IRCLogBufferModel(NonnullRefPtr<IRCLogBuffer>&&); | ||||||
| 
 | 
 | ||||||
|     Retained<IRCLogBuffer> m_log_buffer; |     NonnullRefPtr<IRCLogBuffer> m_log_buffer; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ IRCQuery::~IRCQuery() | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<IRCQuery> IRCQuery::create(IRCClient& client, const String& name) | NonnullRefPtr<IRCQuery> IRCQuery::create(IRCClient& client, const String& name) | ||||||
| { | { | ||||||
|     return adopt(*new IRCQuery(client, name)); |     return adopt(*new IRCQuery(client, name)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ class IRCWindow; | ||||||
| 
 | 
 | ||||||
| class IRCQuery : public RefCounted<IRCQuery> { | class IRCQuery : public RefCounted<IRCQuery> { | ||||||
| public: | public: | ||||||
|     static Retained<IRCQuery> create(IRCClient&, const String& name); |     static NonnullRefPtr<IRCQuery> create(IRCClient&, const String& name); | ||||||
|     ~IRCQuery(); |     ~IRCQuery(); | ||||||
| 
 | 
 | ||||||
|     String name() const { return m_name; } |     String name() const { return m_name; } | ||||||
|  | @ -35,5 +35,5 @@ private: | ||||||
|     String m_name; |     String m_name; | ||||||
|     IRCWindow* m_window { nullptr }; |     IRCWindow* m_window { nullptr }; | ||||||
| 
 | 
 | ||||||
|     Retained<IRCLogBuffer> m_log; |     NonnullRefPtr<IRCLogBuffer> m_log; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -49,6 +49,6 @@ private: | ||||||
|     String m_name; |     String m_name; | ||||||
|     GTableView* m_table_view { nullptr }; |     GTableView* m_table_view { nullptr }; | ||||||
|     GTextEditor* m_text_editor { nullptr }; |     GTextEditor* m_text_editor { nullptr }; | ||||||
|     RetainPtr<IRCLogBuffer> m_log_buffer; |     RefPtr<IRCLogBuffer> m_log_buffer; | ||||||
|     int m_unread_count { 0 }; |     int m_unread_count { 0 }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ public: | ||||||
|         Name, |         Name, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     static Retained<IRCWindowListModel> create(IRCClient& client) { return adopt(*new IRCWindowListModel(client)); } |     static NonnullRefPtr<IRCWindowListModel> create(IRCClient& client) { return adopt(*new IRCWindowListModel(client)); } | ||||||
|     virtual ~IRCWindowListModel() override; |     virtual ~IRCWindowListModel() override; | ||||||
| 
 | 
 | ||||||
|     virtual int row_count(const GModelIndex&) const override; |     virtual int row_count(const GModelIndex&) const override; | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ private: | ||||||
|     virtual void mouseup_event(GMouseEvent&) override; |     virtual void mouseup_event(GMouseEvent&) override; | ||||||
|     virtual void mousemove_event(GMouseEvent&) override; |     virtual void mousemove_event(GMouseEvent&) override; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<GraphicsBitmap> m_bitmap; |     RefPtr<GraphicsBitmap> m_bitmap; | ||||||
| 
 | 
 | ||||||
|     Color m_primary_color { Color::Black }; |     Color m_primary_color { Color::Black }; | ||||||
|     Color m_secondary_color { Color::White }; |     Color m_secondary_color { Color::White }; | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ public: | ||||||
|         __Count |         __Count | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     static Retained<ProcessModel> create(GraphWidget& graph) { return adopt(*new ProcessModel(graph)); } |     static NonnullRefPtr<ProcessModel> create(GraphWidget& graph) { return adopt(*new ProcessModel(graph)); } | ||||||
|     virtual ~ProcessModel() override; |     virtual ~ProcessModel() override; | ||||||
| 
 | 
 | ||||||
|     virtual int row_count(const GModelIndex&) const override; |     virtual int row_count(const GModelIndex&) const override; | ||||||
|  | @ -61,9 +61,9 @@ private: | ||||||
|     HashMap<uid_t, String> m_usernames; |     HashMap<uid_t, String> m_usernames; | ||||||
|     HashMap<pid_t, OwnPtr<Process>> m_processes; |     HashMap<pid_t, OwnPtr<Process>> m_processes; | ||||||
|     Vector<pid_t> m_pids; |     Vector<pid_t> m_pids; | ||||||
|     RetainPtr<GraphicsBitmap> m_generic_process_icon; |     RefPtr<GraphicsBitmap> m_generic_process_icon; | ||||||
|     RetainPtr<GraphicsBitmap> m_high_priority_icon; |     RefPtr<GraphicsBitmap> m_high_priority_icon; | ||||||
|     RetainPtr<GraphicsBitmap> m_low_priority_icon; |     RefPtr<GraphicsBitmap> m_low_priority_icon; | ||||||
|     RetainPtr<GraphicsBitmap> m_normal_priority_icon; |     RefPtr<GraphicsBitmap> m_normal_priority_icon; | ||||||
|     CFile m_proc_all; |     CFile m_proc_all; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -55,7 +55,7 @@ private: | ||||||
|     Rect m_rect; |     Rect m_rect; | ||||||
|     GButton* m_button { nullptr }; |     GButton* m_button { nullptr }; | ||||||
|     String m_icon_path; |     String m_icon_path; | ||||||
|     RetainPtr<GraphicsBitmap> m_icon; |     RefPtr<GraphicsBitmap> m_icon; | ||||||
|     bool m_active { false }; |     bool m_active { false }; | ||||||
|     bool m_minimized { false }; |     bool m_minimized { false }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -19,7 +19,7 @@ | ||||||
| byte Terminal::Attribute::default_foreground_color = 7; | byte Terminal::Attribute::default_foreground_color = 7; | ||||||
| byte Terminal::Attribute::default_background_color = 0; | byte Terminal::Attribute::default_background_color = 0; | ||||||
| 
 | 
 | ||||||
| Terminal::Terminal(int ptm_fd, RetainPtr<CConfigFile> config) | Terminal::Terminal(int ptm_fd, RefPtr<CConfigFile> config) | ||||||
|     : m_ptm_fd(ptm_fd) |     : m_ptm_fd(ptm_fd) | ||||||
|     , m_notifier(ptm_fd, CNotifier::Read) |     , m_notifier(ptm_fd, CNotifier::Read) | ||||||
|     , m_config(config) |     , m_config(config) | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ class Font; | ||||||
| 
 | 
 | ||||||
| class Terminal final : public GFrame { | class Terminal final : public GFrame { | ||||||
| public: | public: | ||||||
|     explicit Terminal(int ptm_fd, RetainPtr<CConfigFile> config); |     explicit Terminal(int ptm_fd, RefPtr<CConfigFile> config); | ||||||
|     virtual ~Terminal() override; |     virtual ~Terminal() override; | ||||||
| 
 | 
 | ||||||
|     void create_window(); |     void create_window(); | ||||||
|  | @ -30,7 +30,7 @@ public: | ||||||
|     bool should_beep() { return m_should_beep; } |     bool should_beep() { return m_should_beep; } | ||||||
|     void set_should_beep(bool sb) { m_should_beep = sb; }; |     void set_should_beep(bool sb) { m_should_beep = sb; }; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<CConfigFile> config() const { return m_config; } |     RefPtr<CConfigFile> config() const { return m_config; } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     typedef Vector<unsigned, 4> ParamVector; |     typedef Vector<unsigned, 4> ParamVector; | ||||||
|  | @ -205,7 +205,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     CTimer m_cursor_blink_timer; |     CTimer m_cursor_blink_timer; | ||||||
|     CTimer m_visual_beep_timer; |     CTimer m_visual_beep_timer; | ||||||
|     RetainPtr<CConfigFile> m_config; |     RefPtr<CConfigFile> m_config; | ||||||
| 
 | 
 | ||||||
|     byte m_last_char { 0 }; |     byte m_last_char { 0 }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -81,7 +81,7 @@ static void make_shell(int ptm_fd) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| GWindow* create_settings_window(Terminal& terminal, RetainPtr<CConfigFile> config) | GWindow* create_settings_window(Terminal& terminal, RefPtr<CConfigFile> config) | ||||||
| { | { | ||||||
|     auto* window = new GWindow; |     auto* window = new GWindow; | ||||||
|     window->set_title("Terminal Settings"); |     window->set_title("Terminal Settings"); | ||||||
|  | @ -149,7 +149,7 @@ int main(int argc, char** argv) | ||||||
|     window->set_double_buffering_enabled(false); |     window->set_double_buffering_enabled(false); | ||||||
|     window->set_should_exit_event_loop_on_close(true); |     window->set_should_exit_event_loop_on_close(true); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<CConfigFile> config = CConfigFile::get_for_app("Terminal"); |     RefPtr<CConfigFile> config = CConfigFile::get_for_app("Terminal"); | ||||||
|     Terminal terminal(ptm_fd, config); |     Terminal terminal(ptm_fd, config); | ||||||
|     window->set_has_alpha_channel(true); |     window->set_has_alpha_channel(true); | ||||||
|     window->set_main_widget(&terminal); |     window->set_main_widget(&terminal); | ||||||
|  |  | ||||||
|  | @ -69,7 +69,7 @@ public: | ||||||
|     void set_stat_label(GLabel* l) { stats = l; }; |     void set_stat_label(GLabel* l) { stats = l; }; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     RetainPtr<GraphicsBitmap> bitmap; |     RefPtr<GraphicsBitmap> bitmap; | ||||||
|     GLabel* stats; |     GLabel* stats; | ||||||
| 
 | 
 | ||||||
|     virtual void paint_event(GPaintEvent&) override; |     virtual void paint_event(GPaintEvent&) override; | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ public: | ||||||
|     } |     } | ||||||
|     virtual ~TestWidget() override {} |     virtual ~TestWidget() override {} | ||||||
| 
 | 
 | ||||||
|     void set_bitmap(RetainPtr<GraphicsBitmap>&& bitmap) |     void set_bitmap(RefPtr<GraphicsBitmap>&& bitmap) | ||||||
|     { |     { | ||||||
|         m_bitmap = move(bitmap); |         m_bitmap = move(bitmap); | ||||||
|         update(); |         update(); | ||||||
|  | @ -31,7 +31,7 @@ private: | ||||||
|         painter.blit_tiled({ 160, 160, 160, 160 }, *m_bitmap, m_bitmap->rect()); |         painter.blit_tiled({ 160, 160, 160, 160 }, *m_bitmap, m_bitmap->rect()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     RetainPtr<GraphicsBitmap> m_bitmap; |     RefPtr<GraphicsBitmap> m_bitmap; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| int main(int argc, char** argv) | int main(int argc, char** argv) | ||||||
|  |  | ||||||
|  | @ -52,7 +52,7 @@ private: | ||||||
|     String m_name; |     String m_name; | ||||||
|     int m_grid_size { 5 }; |     int m_grid_size { 5 }; | ||||||
|     bool m_should_snap_to_grid { true }; |     bool m_should_snap_to_grid { true }; | ||||||
|     Vector<Retained<VBWidget>> m_widgets; |     Vector<NonnullRefPtr<VBWidget>> m_widgets; | ||||||
|     HashMap<GWidget*, VBWidget*> m_gwidget_map; |     HashMap<GWidget*, VBWidget*> m_gwidget_map; | ||||||
|     HashTable<VBWidget*> m_selected_widgets; |     HashTable<VBWidget*> m_selected_widgets; | ||||||
|     Point m_transform_event_origin; |     Point m_transform_event_origin; | ||||||
|  |  | ||||||
|  | @ -44,7 +44,7 @@ class VBWidget : public RefCounted<VBWidget> | ||||||
|     friend class VBWidgetPropertyModel; |     friend class VBWidgetPropertyModel; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     static Retained<VBWidget> create(VBWidgetType type, VBForm& form) { return adopt(*new VBWidget(type, form)); } |     static NonnullRefPtr<VBWidget> create(VBWidgetType type, VBForm& form) { return adopt(*new VBWidget(type, form)); } | ||||||
|     ~VBWidget(); |     ~VBWidget(); | ||||||
| 
 | 
 | ||||||
|     bool is_selected() const; |     bool is_selected() const; | ||||||
|  | @ -80,6 +80,6 @@ private: | ||||||
|     VBForm& m_form; |     VBForm& m_form; | ||||||
|     GWidget* m_gwidget { nullptr }; |     GWidget* m_gwidget { nullptr }; | ||||||
|     Vector<OwnPtr<VBProperty>> m_properties; |     Vector<OwnPtr<VBProperty>> m_properties; | ||||||
|     Retained<VBWidgetPropertyModel> m_property_model; |     NonnullRefPtr<VBWidgetPropertyModel> m_property_model; | ||||||
|     Rect m_transform_origin_rect; |     Rect m_transform_origin_rect; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ public: | ||||||
|         __Count |         __Count | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     static Retained<VBWidgetPropertyModel> create(VBWidget& widget) { return adopt(*new VBWidgetPropertyModel(widget)); } |     static NonnullRefPtr<VBWidgetPropertyModel> create(VBWidget& widget) { return adopt(*new VBWidgetPropertyModel(widget)); } | ||||||
|     virtual ~VBWidgetPropertyModel() override; |     virtual ~VBWidgetPropertyModel() override; | ||||||
| 
 | 
 | ||||||
|     virtual int row_count(const GModelIndex&) const override; |     virtual int row_count(const GModelIndex&) const override; | ||||||
|  |  | ||||||
|  | @ -83,14 +83,14 @@ private: | ||||||
|     int m_mine_count { 10 }; |     int m_mine_count { 10 }; | ||||||
|     int m_unswept_empties { 0 }; |     int m_unswept_empties { 0 }; | ||||||
|     Vector<OwnPtr<Square>> m_squares; |     Vector<OwnPtr<Square>> m_squares; | ||||||
|     RetainPtr<GraphicsBitmap> m_mine_bitmap; |     RefPtr<GraphicsBitmap> m_mine_bitmap; | ||||||
|     RetainPtr<GraphicsBitmap> m_flag_bitmap; |     RefPtr<GraphicsBitmap> m_flag_bitmap; | ||||||
|     RetainPtr<GraphicsBitmap> m_badflag_bitmap; |     RefPtr<GraphicsBitmap> m_badflag_bitmap; | ||||||
|     RetainPtr<GraphicsBitmap> m_consider_bitmap; |     RefPtr<GraphicsBitmap> m_consider_bitmap; | ||||||
|     RetainPtr<GraphicsBitmap> m_default_face_bitmap; |     RefPtr<GraphicsBitmap> m_default_face_bitmap; | ||||||
|     RetainPtr<GraphicsBitmap> m_good_face_bitmap; |     RefPtr<GraphicsBitmap> m_good_face_bitmap; | ||||||
|     RetainPtr<GraphicsBitmap> m_bad_face_bitmap; |     RefPtr<GraphicsBitmap> m_bad_face_bitmap; | ||||||
|     RetainPtr<GraphicsBitmap> m_number_bitmap[8]; |     RefPtr<GraphicsBitmap> m_number_bitmap[8]; | ||||||
|     GButton& m_face_button; |     GButton& m_face_button; | ||||||
|     GLabel& m_flag_label; |     GLabel& m_flag_label; | ||||||
|     GLabel& m_time_label; |     GLabel& m_time_label; | ||||||
|  |  | ||||||
|  | @ -59,5 +59,5 @@ private: | ||||||
|     unsigned m_high_score { 0 }; |     unsigned m_high_score { 0 }; | ||||||
|     String m_high_score_text; |     String m_high_score_text; | ||||||
| 
 | 
 | ||||||
|     Vector<Retained<GraphicsBitmap>> m_fruit_bitmaps; |     Vector<NonnullRefPtr<GraphicsBitmap>> m_fruit_bitmaps; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -2,12 +2,12 @@ | ||||||
| 
 | 
 | ||||||
| // #define OFFD_DEBUG
 | // #define OFFD_DEBUG
 | ||||||
| 
 | 
 | ||||||
| Retained<DiskPartition> DiskPartition::create(Retained<DiskDevice>&& device, unsigned block_offset) | NonnullRefPtr<DiskPartition> DiskPartition::create(NonnullRefPtr<DiskDevice>&& device, unsigned block_offset) | ||||||
| { | { | ||||||
|     return adopt(*new DiskPartition(move(device), block_offset)); |     return adopt(*new DiskPartition(move(device), block_offset)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| DiskPartition::DiskPartition(Retained<DiskDevice>&& device, unsigned block_offset) | DiskPartition::DiskPartition(NonnullRefPtr<DiskDevice>&& device, unsigned block_offset) | ||||||
|     : m_device(move(device)) |     : m_device(move(device)) | ||||||
|     , m_block_offset(block_offset) |     , m_block_offset(block_offset) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ | ||||||
| 
 | 
 | ||||||
| class DiskPartition final : public DiskDevice { | class DiskPartition final : public DiskDevice { | ||||||
| public: | public: | ||||||
|     static Retained<DiskPartition> create(Retained<DiskDevice>&& device, unsigned block_offset); |     static NonnullRefPtr<DiskPartition> create(NonnullRefPtr<DiskDevice>&& device, unsigned block_offset); | ||||||
|     virtual ~DiskPartition(); |     virtual ~DiskPartition(); | ||||||
| 
 | 
 | ||||||
|     virtual unsigned block_size() const override; |     virtual unsigned block_size() const override; | ||||||
|  | @ -17,8 +17,8 @@ public: | ||||||
| private: | private: | ||||||
|     virtual const char* class_name() const override; |     virtual const char* class_name() const override; | ||||||
| 
 | 
 | ||||||
|     DiskPartition(Retained<DiskDevice>&&, unsigned); |     DiskPartition(NonnullRefPtr<DiskDevice>&&, unsigned); | ||||||
| 
 | 
 | ||||||
|     Retained<DiskDevice> m_device; |     NonnullRefPtr<DiskDevice> m_device; | ||||||
|     unsigned m_block_offset; |     unsigned m_block_offset; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
| //#define FBBD_DEBUG
 | //#define FBBD_DEBUG
 | ||||||
| #define IGNORE_FILE_LENGTH // Useful for e.g /dev/hda2
 | #define IGNORE_FILE_LENGTH // Useful for e.g /dev/hda2
 | ||||||
| 
 | 
 | ||||||
| RetainPtr<FileBackedDiskDevice> FileBackedDiskDevice::create(String&& image_path, unsigned block_size) | RefPtr<FileBackedDiskDevice> FileBackedDiskDevice::create(String&& image_path, unsigned block_size) | ||||||
| { | { | ||||||
|     return adopt(*new FileBackedDiskDevice(move(image_path), block_size)); |     return adopt(*new FileBackedDiskDevice(move(image_path), block_size)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
| 
 | 
 | ||||||
| class FileBackedDiskDevice final : public DiskDevice { | class FileBackedDiskDevice final : public DiskDevice { | ||||||
| public: | public: | ||||||
|     static RetainPtr<FileBackedDiskDevice> create(String&& image_path, unsigned block_size); |     static RefPtr<FileBackedDiskDevice> create(String&& image_path, unsigned block_size); | ||||||
|     virtual ~FileBackedDiskDevice() override; |     virtual ~FileBackedDiskDevice() override; | ||||||
| 
 | 
 | ||||||
|     bool is_valid() const { return m_file; } |     bool is_valid() const { return m_file; } | ||||||
|  |  | ||||||
|  | @ -78,7 +78,7 @@ | ||||||
| #define ATA_REG_ALTSTATUS 0x0C | #define ATA_REG_ALTSTATUS 0x0C | ||||||
| #define ATA_REG_DEVADDRESS 0x0D | #define ATA_REG_DEVADDRESS 0x0D | ||||||
| 
 | 
 | ||||||
| Retained<IDEDiskDevice> IDEDiskDevice::create() | NonnullRefPtr<IDEDiskDevice> IDEDiskDevice::create() | ||||||
| { | { | ||||||
|     return adopt(*new IDEDiskDevice); |     return adopt(*new IDEDiskDevice); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ class IDEDiskDevice final : public IRQHandler | ||||||
|     , public DiskDevice { |     , public DiskDevice { | ||||||
|     AK_MAKE_ETERNAL |     AK_MAKE_ETERNAL | ||||||
| public: | public: | ||||||
|     static Retained<IDEDiskDevice> create(); |     static NonnullRefPtr<IDEDiskDevice> create(); | ||||||
|     virtual ~IDEDiskDevice() override; |     virtual ~IDEDiskDevice() override; | ||||||
| 
 | 
 | ||||||
|     // ^DiskDevice
 |     // ^DiskDevice
 | ||||||
|  | @ -55,7 +55,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     PCI::Address m_pci_address; |     PCI::Address m_pci_address; | ||||||
|     PhysicalRegionDescriptor m_prdt; |     PhysicalRegionDescriptor m_prdt; | ||||||
|     RetainPtr<PhysicalPage> m_dma_buffer_page; |     RefPtr<PhysicalPage> m_dma_buffer_page; | ||||||
|     word m_bus_master_base { 0 }; |     word m_bus_master_base { 0 }; | ||||||
|     Lockable<bool> m_dma_enabled; |     Lockable<bool> m_dma_enabled; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
| 
 | 
 | ||||||
| #define MBR_DEBUG | #define MBR_DEBUG | ||||||
| 
 | 
 | ||||||
| MBRPartitionTable::MBRPartitionTable(Retained<DiskDevice>&& device) | MBRPartitionTable::MBRPartitionTable(NonnullRefPtr<DiskDevice>&& device) | ||||||
|     : m_device(move(device)) |     : m_device(move(device)) | ||||||
| { | { | ||||||
| } | } | ||||||
|  | @ -37,7 +37,7 @@ bool MBRPartitionTable::initialize() | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<DiskPartition> MBRPartitionTable::partition(unsigned index) | RefPtr<DiskPartition> MBRPartitionTable::partition(unsigned index) | ||||||
| { | { | ||||||
|     ASSERT(index >= 1 && index <= 4); |     ASSERT(index >= 1 && index <= 4); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -31,14 +31,14 @@ class MBRPartitionTable { | ||||||
|     AK_MAKE_ETERNAL |     AK_MAKE_ETERNAL | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     MBRPartitionTable(Retained<DiskDevice>&& device); |     MBRPartitionTable(NonnullRefPtr<DiskDevice>&& device); | ||||||
|     ~MBRPartitionTable(); |     ~MBRPartitionTable(); | ||||||
| 
 | 
 | ||||||
|     bool initialize(); |     bool initialize(); | ||||||
|     RetainPtr<DiskPartition> partition(unsigned index); |     RefPtr<DiskPartition> partition(unsigned index); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     Retained<DiskDevice> m_device; |     NonnullRefPtr<DiskDevice> m_device; | ||||||
| 
 | 
 | ||||||
|     ByteBuffer read_header() const; |     ByteBuffer read_header() const; | ||||||
|     const MBRPartitionHeader& header() const; |     const MBRPartitionHeader& header() const; | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ File::~File() | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| KResultOr<Retained<FileDescription>> File::open(int options) | KResultOr<NonnullRefPtr<FileDescription>> File::open(int options) | ||||||
| { | { | ||||||
|     UNUSED_PARAM(options); |     UNUSED_PARAM(options); | ||||||
|     return FileDescription::create(this); |     return FileDescription::create(this); | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ class File : public RefCounted<File> { | ||||||
| public: | public: | ||||||
|     virtual ~File(); |     virtual ~File(); | ||||||
| 
 | 
 | ||||||
|     virtual KResultOr<Retained<FileDescription>> open(int options); |     virtual KResultOr<NonnullRefPtr<FileDescription>> open(int options); | ||||||
|     virtual void close(); |     virtual void close(); | ||||||
| 
 | 
 | ||||||
|     virtual bool can_read(FileDescription&) const = 0; |     virtual bool can_read(FileDescription&) const = 0; | ||||||
|  |  | ||||||
|  | @ -26,9 +26,9 @@ Custody* Custody::get_if_cached(Custody* parent, const String& name) | ||||||
|     return nullptr; |     return nullptr; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<Custody> Custody::get_or_create(Custody* parent, const String& name, Inode& inode) | NonnullRefPtr<Custody> Custody::get_or_create(Custody* parent, const String& name, Inode& inode) | ||||||
| { | { | ||||||
|     if (RetainPtr<Custody> cached_custody = get_if_cached(parent, name)) { |     if (RefPtr<Custody> cached_custody = get_if_cached(parent, name)) { | ||||||
|         if (&cached_custody->inode() != &inode) { |         if (&cached_custody->inode() != &inode) { | ||||||
|             dbgprintf("WTF! cached custody for name '%s' has inode=%s, new inode=%s\n", |             dbgprintf("WTF! cached custody for name '%s' has inode=%s, new inode=%s\n", | ||||||
|                 name.characters(), |                 name.characters(), | ||||||
|  |  | ||||||
|  | @ -13,8 +13,8 @@ class VFS; | ||||||
| class Custody : public RefCounted<Custody> { | class Custody : public RefCounted<Custody> { | ||||||
| public: | public: | ||||||
|     static Custody* get_if_cached(Custody* parent, const String& name); |     static Custody* get_if_cached(Custody* parent, const String& name); | ||||||
|     static Retained<Custody> get_or_create(Custody* parent, const String& name, Inode&); |     static NonnullRefPtr<Custody> get_or_create(Custody* parent, const String& name, Inode&); | ||||||
|     static Retained<Custody> create(Custody* parent, const String& name, Inode& inode) |     static NonnullRefPtr<Custody> create(Custody* parent, const String& name, Inode& inode) | ||||||
|     { |     { | ||||||
|         return adopt(*new Custody(parent, name, inode)); |         return adopt(*new Custody(parent, name, inode)); | ||||||
|     } |     } | ||||||
|  | @ -38,9 +38,9 @@ public: | ||||||
| private: | private: | ||||||
|     Custody(Custody* parent, const String& name, Inode&); |     Custody(Custody* parent, const String& name, Inode&); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Custody> m_parent; |     RefPtr<Custody> m_parent; | ||||||
|     String m_name; |     String m_name; | ||||||
|     Retained<Inode> m_inode; |     NonnullRefPtr<Inode> m_inode; | ||||||
|     bool m_deleted { false }; |     bool m_deleted { false }; | ||||||
|     bool m_mounted_on { false }; |     bool m_mounted_on { false }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ DevPtsFS& DevPtsFS::the() | ||||||
|     return *s_the; |     return *s_the; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<DevPtsFS> DevPtsFS::create() | NonnullRefPtr<DevPtsFS> DevPtsFS::create() | ||||||
| { | { | ||||||
|     return adopt(*new DevPtsFS); |     return adopt(*new DevPtsFS); | ||||||
| } | } | ||||||
|  | @ -36,7 +36,7 @@ const char* DevPtsFS::class_name() const | ||||||
|     return "DevPtsFS"; |     return "DevPtsFS"; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<SynthFSInode> DevPtsFS::create_slave_pty_device_file(unsigned index) | NonnullRefPtr<SynthFSInode> DevPtsFS::create_slave_pty_device_file(unsigned index) | ||||||
| { | { | ||||||
|     auto file = adopt(*new SynthFSInode(*this, generate_inode_index())); |     auto file = adopt(*new SynthFSInode(*this, generate_inode_index())); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ public: | ||||||
|     [[gnu::pure]] static DevPtsFS& the(); |     [[gnu::pure]] static DevPtsFS& the(); | ||||||
| 
 | 
 | ||||||
|     virtual ~DevPtsFS() override; |     virtual ~DevPtsFS() override; | ||||||
|     static Retained<DevPtsFS> create(); |     static NonnullRefPtr<DevPtsFS> create(); | ||||||
| 
 | 
 | ||||||
|     virtual bool initialize() override; |     virtual bool initialize() override; | ||||||
|     virtual const char* class_name() const override; |     virtual const char* class_name() const override; | ||||||
|  | @ -22,7 +22,7 @@ public: | ||||||
| private: | private: | ||||||
|     DevPtsFS(); |     DevPtsFS(); | ||||||
| 
 | 
 | ||||||
|     Retained<SynthFSInode> create_slave_pty_device_file(unsigned index); |     NonnullRefPtr<SynthFSInode> create_slave_pty_device_file(unsigned index); | ||||||
| 
 | 
 | ||||||
|     HashTable<SlavePTY*> m_slave_ptys; |     HashTable<SlavePTY*> m_slave_ptys; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -45,7 +45,7 @@ Lockable<InlineLRUCache<BlockIdentifier, CachedBlock>>& block_cache() | ||||||
|     return *s_cache; |     return *s_cache; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| DiskBackedFS::DiskBackedFS(Retained<DiskDevice>&& device) | DiskBackedFS::DiskBackedFS(NonnullRefPtr<DiskDevice>&& device) | ||||||
|     : m_device(move(device)) |     : m_device(move(device)) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ public: | ||||||
|     virtual void flush_writes() override; |     virtual void flush_writes() override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|     explicit DiskBackedFS(Retained<DiskDevice>&&); |     explicit DiskBackedFS(NonnullRefPtr<DiskDevice>&&); | ||||||
| 
 | 
 | ||||||
|     void set_block_size(unsigned); |     void set_block_size(unsigned); | ||||||
| 
 | 
 | ||||||
|  | @ -27,7 +27,7 @@ protected: | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     int m_block_size { 0 }; |     int m_block_size { 0 }; | ||||||
|     Retained<DiskDevice> m_device; |     NonnullRefPtr<DiskDevice> m_device; | ||||||
| 
 | 
 | ||||||
|     HashMap<unsigned, ByteBuffer> m_write_cache; |     HashMap<unsigned, ByteBuffer> m_write_cache; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -31,12 +31,12 @@ static byte to_ext2_file_type(mode_t mode) | ||||||
|     return EXT2_FT_UNKNOWN; |     return EXT2_FT_UNKNOWN; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<Ext2FS> Ext2FS::create(Retained<DiskDevice>&& device) | NonnullRefPtr<Ext2FS> Ext2FS::create(NonnullRefPtr<DiskDevice>&& device) | ||||||
| { | { | ||||||
|     return adopt(*new Ext2FS(move(device))); |     return adopt(*new Ext2FS(move(device))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Ext2FS::Ext2FS(Retained<DiskDevice>&& device) | Ext2FS::Ext2FS(NonnullRefPtr<DiskDevice>&& device) | ||||||
|     : DiskBackedFS(move(device)) |     : DiskBackedFS(move(device)) | ||||||
| { | { | ||||||
| } | } | ||||||
|  | @ -448,7 +448,7 @@ void Ext2FSInode::flush_metadata() | ||||||
|     set_metadata_dirty(false); |     set_metadata_dirty(false); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Inode> Ext2FS::get_inode(InodeIdentifier inode) const | RefPtr<Inode> Ext2FS::get_inode(InodeIdentifier inode) const | ||||||
| { | { | ||||||
|     LOCKER(m_lock); |     LOCKER(m_lock); | ||||||
|     ASSERT(inode.fsid() == fsid()); |     ASSERT(inode.fsid() == fsid()); | ||||||
|  | @ -1085,7 +1085,7 @@ bool Ext2FS::set_block_allocation_state(BlockIndex block_index, bool new_state) | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Inode> Ext2FS::create_directory(InodeIdentifier parent_id, const String& name, mode_t mode, int& error) | RefPtr<Inode> Ext2FS::create_directory(InodeIdentifier parent_id, const String& name, mode_t mode, int& error) | ||||||
| { | { | ||||||
|     LOCKER(m_lock); |     LOCKER(m_lock); | ||||||
|     ASSERT(parent_id.fsid() == fsid()); |     ASSERT(parent_id.fsid() == fsid()); | ||||||
|  | @ -1125,7 +1125,7 @@ RetainPtr<Inode> Ext2FS::create_directory(InodeIdentifier parent_id, const Strin | ||||||
|     return inode; |     return inode; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Inode> Ext2FS::create_inode(InodeIdentifier parent_id, const String& name, mode_t mode, off_t size, dev_t dev, int& error) | RefPtr<Inode> Ext2FS::create_inode(InodeIdentifier parent_id, const String& name, mode_t mode, off_t size, dev_t dev, int& error) | ||||||
| { | { | ||||||
|     LOCKER(m_lock); |     LOCKER(m_lock); | ||||||
|     ASSERT(parent_id.fsid() == fsid()); |     ASSERT(parent_id.fsid() == fsid()); | ||||||
|  |  | ||||||
|  | @ -60,7 +60,7 @@ class Ext2FS final : public DiskBackedFS { | ||||||
|     friend class Ext2FSInode; |     friend class Ext2FSInode; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     static Retained<Ext2FS> create(Retained<DiskDevice>&&); |     static NonnullRefPtr<Ext2FS> create(NonnullRefPtr<DiskDevice>&&); | ||||||
|     virtual ~Ext2FS() override; |     virtual ~Ext2FS() override; | ||||||
|     virtual bool initialize() override; |     virtual bool initialize() override; | ||||||
| 
 | 
 | ||||||
|  | @ -73,7 +73,7 @@ private: | ||||||
|     typedef unsigned BlockIndex; |     typedef unsigned BlockIndex; | ||||||
|     typedef unsigned GroupIndex; |     typedef unsigned GroupIndex; | ||||||
|     typedef unsigned InodeIndex; |     typedef unsigned InodeIndex; | ||||||
|     explicit Ext2FS(Retained<DiskDevice>&&); |     explicit Ext2FS(NonnullRefPtr<DiskDevice>&&); | ||||||
| 
 | 
 | ||||||
|     const ext2_super_block& super_block() const; |     const ext2_super_block& super_block() const; | ||||||
|     const ext2_group_desc& group_descriptor(unsigned groupIndex) const; |     const ext2_group_desc& group_descriptor(unsigned groupIndex) const; | ||||||
|  | @ -92,9 +92,9 @@ private: | ||||||
| 
 | 
 | ||||||
|     virtual const char* class_name() const override; |     virtual const char* class_name() const override; | ||||||
|     virtual InodeIdentifier root_inode() const override; |     virtual InodeIdentifier root_inode() const override; | ||||||
|     virtual RetainPtr<Inode> create_inode(InodeIdentifier parentInode, const String& name, mode_t, off_t size, dev_t, int& error) override; |     virtual RefPtr<Inode> create_inode(InodeIdentifier parentInode, const String& name, mode_t, off_t size, dev_t, int& error) override; | ||||||
|     virtual RetainPtr<Inode> create_directory(InodeIdentifier parentInode, const String& name, mode_t, int& error) override; |     virtual RefPtr<Inode> create_directory(InodeIdentifier parentInode, const String& name, mode_t, int& error) override; | ||||||
|     virtual RetainPtr<Inode> get_inode(InodeIdentifier) const override; |     virtual RefPtr<Inode> get_inode(InodeIdentifier) const override; | ||||||
| 
 | 
 | ||||||
|     InodeIndex allocate_inode(GroupIndex preferred_group, off_t expected_size); |     InodeIndex allocate_inode(GroupIndex preferred_group, off_t expected_size); | ||||||
|     Vector<BlockIndex> allocate_blocks(GroupIndex, int count); |     Vector<BlockIndex> allocate_blocks(GroupIndex, int count); | ||||||
|  | @ -126,7 +126,7 @@ private: | ||||||
|     mutable ByteBuffer m_cached_super_block; |     mutable ByteBuffer m_cached_super_block; | ||||||
|     mutable ByteBuffer m_cached_group_descriptor_table; |     mutable ByteBuffer m_cached_group_descriptor_table; | ||||||
| 
 | 
 | ||||||
|     mutable HashMap<BlockIndex, RetainPtr<Ext2FSInode>> m_inode_cache; |     mutable HashMap<BlockIndex, RefPtr<Ext2FSInode>> m_inode_cache; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| inline Ext2FS& Ext2FSInode::fs() | inline Ext2FS& Ext2FSInode::fs() | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ Lockable<HashTable<FIFO*>>& all_fifos() | ||||||
|     return *s_table; |     return *s_table; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<FIFO> FIFO::from_fifo_id(dword id) | RefPtr<FIFO> FIFO::from_fifo_id(dword id) | ||||||
| { | { | ||||||
|     auto* ptr = reinterpret_cast<FIFO*>(id); |     auto* ptr = reinterpret_cast<FIFO*>(id); | ||||||
|     LOCKER(all_fifos().lock()); |     LOCKER(all_fifos().lock()); | ||||||
|  | @ -25,12 +25,12 @@ RetainPtr<FIFO> FIFO::from_fifo_id(dword id) | ||||||
|     return ptr; |     return ptr; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<FIFO> FIFO::create(uid_t uid) | NonnullRefPtr<FIFO> FIFO::create(uid_t uid) | ||||||
| { | { | ||||||
|     return adopt(*new FIFO(uid)); |     return adopt(*new FIFO(uid)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<FileDescription> FIFO::open_direction(FIFO::Direction direction) | NonnullRefPtr<FileDescription> FIFO::open_direction(FIFO::Direction direction) | ||||||
| { | { | ||||||
|     auto description = FileDescription::create(this); |     auto description = FileDescription::create(this); | ||||||
|     attach(direction); |     attach(direction); | ||||||
|  |  | ||||||
|  | @ -14,14 +14,14 @@ public: | ||||||
|         Writer |         Writer | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     static RetainPtr<FIFO> from_fifo_id(dword); |     static RefPtr<FIFO> from_fifo_id(dword); | ||||||
| 
 | 
 | ||||||
|     static Retained<FIFO> create(uid_t); |     static NonnullRefPtr<FIFO> create(uid_t); | ||||||
|     virtual ~FIFO() override; |     virtual ~FIFO() override; | ||||||
| 
 | 
 | ||||||
|     uid_t uid() const { return m_uid; } |     uid_t uid() const { return m_uid; } | ||||||
| 
 | 
 | ||||||
|     Retained<FileDescription> open_direction(Direction); |     NonnullRefPtr<FileDescription> open_direction(Direction); | ||||||
| 
 | 
 | ||||||
|     void attach(Direction); |     void attach(Direction); | ||||||
|     void detach(Direction); |     void detach(Direction); | ||||||
|  |  | ||||||
|  | @ -15,19 +15,19 @@ | ||||||
| #include <Kernel/VM/MemoryManager.h> | #include <Kernel/VM/MemoryManager.h> | ||||||
| #include <LibC/errno_numbers.h> | #include <LibC/errno_numbers.h> | ||||||
| 
 | 
 | ||||||
| Retained<FileDescription> FileDescription::create(RetainPtr<Custody>&& custody) | NonnullRefPtr<FileDescription> FileDescription::create(RefPtr<Custody>&& custody) | ||||||
| { | { | ||||||
|     auto description = adopt(*new FileDescription(InodeFile::create(custody->inode()))); |     auto description = adopt(*new FileDescription(InodeFile::create(custody->inode()))); | ||||||
|     description->m_custody = move(custody); |     description->m_custody = move(custody); | ||||||
|     return description; |     return description; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<FileDescription> FileDescription::create(RetainPtr<File>&& file, SocketRole role) | NonnullRefPtr<FileDescription> FileDescription::create(RefPtr<File>&& file, SocketRole role) | ||||||
| { | { | ||||||
|     return adopt(*new FileDescription(move(file), role)); |     return adopt(*new FileDescription(move(file), role)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| FileDescription::FileDescription(RetainPtr<File>&& file, SocketRole role) | FileDescription::FileDescription(RefPtr<File>&& file, SocketRole role) | ||||||
|     : m_file(move(file)) |     : m_file(move(file)) | ||||||
| { | { | ||||||
|     if (m_file->is_inode()) |     if (m_file->is_inode()) | ||||||
|  | @ -58,9 +58,9 @@ void FileDescription::set_socket_role(SocketRole role) | ||||||
|     socket()->attach(*this); |     socket()->attach(*this); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<FileDescription> FileDescription::clone() | NonnullRefPtr<FileDescription> FileDescription::clone() | ||||||
| { | { | ||||||
|     RetainPtr<FileDescription> description; |     RefPtr<FileDescription> description; | ||||||
|     if (is_fifo()) { |     if (is_fifo()) { | ||||||
|         description = fifo()->open_direction(m_fifo_direction); |         description = fifo()->open_direction(m_fifo_direction); | ||||||
|     } else { |     } else { | ||||||
|  |  | ||||||
|  | @ -21,11 +21,11 @@ class SharedMemory; | ||||||
| 
 | 
 | ||||||
| class FileDescription : public RefCounted<FileDescription> { | class FileDescription : public RefCounted<FileDescription> { | ||||||
| public: | public: | ||||||
|     static Retained<FileDescription> create(RetainPtr<Custody>&&); |     static NonnullRefPtr<FileDescription> create(RefPtr<Custody>&&); | ||||||
|     static Retained<FileDescription> create(RetainPtr<File>&&, SocketRole = SocketRole::None); |     static NonnullRefPtr<FileDescription> create(RefPtr<File>&&, SocketRole = SocketRole::None); | ||||||
|     ~FileDescription(); |     ~FileDescription(); | ||||||
| 
 | 
 | ||||||
|     Retained<FileDescription> clone(); |     NonnullRefPtr<FileDescription> clone(); | ||||||
| 
 | 
 | ||||||
|     int close(); |     int close(); | ||||||
| 
 | 
 | ||||||
|  | @ -92,7 +92,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     ByteBuffer& generator_cache() { return m_generator_cache; } |     ByteBuffer& generator_cache() { return m_generator_cache; } | ||||||
| 
 | 
 | ||||||
|     void set_original_inode(Badge<VFS>, Retained<Inode>&& inode) { m_inode = move(inode); } |     void set_original_inode(Badge<VFS>, NonnullRefPtr<Inode>&& inode) { m_inode = move(inode); } | ||||||
| 
 | 
 | ||||||
|     SocketRole socket_role() const { return m_socket_role; } |     SocketRole socket_role() const { return m_socket_role; } | ||||||
|     void set_socket_role(SocketRole); |     void set_socket_role(SocketRole); | ||||||
|  | @ -105,12 +105,12 @@ public: | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     friend class VFS; |     friend class VFS; | ||||||
|     FileDescription(RetainPtr<File>&&, SocketRole = SocketRole::None); |     FileDescription(RefPtr<File>&&, SocketRole = SocketRole::None); | ||||||
|     FileDescription(FIFO&, FIFO::Direction); |     FileDescription(FIFO&, FIFO::Direction); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Custody> m_custody; |     RefPtr<Custody> m_custody; | ||||||
|     RetainPtr<Inode> m_inode; |     RefPtr<Inode> m_inode; | ||||||
|     RetainPtr<File> m_file; |     RefPtr<File> m_file; | ||||||
| 
 | 
 | ||||||
|     off_t m_current_offset { 0 }; |     off_t m_current_offset { 0 }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -58,7 +58,7 @@ void FS::sync() | ||||||
| { | { | ||||||
|     Inode::sync(); |     Inode::sync(); | ||||||
| 
 | 
 | ||||||
|     Vector<Retained<FS>, 32> fses; |     Vector<NonnullRefPtr<FS>, 32> fses; | ||||||
|     { |     { | ||||||
|         InterruptDisabler disabler; |         InterruptDisabler disabler; | ||||||
|         for (auto& it : all_fses()) |         for (auto& it : all_fses()) | ||||||
|  |  | ||||||
|  | @ -54,10 +54,10 @@ public: | ||||||
|         byte file_type { 0 }; |         byte file_type { 0 }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     virtual RetainPtr<Inode> create_inode(InodeIdentifier parentInode, const String& name, mode_t, off_t size, dev_t, int& error) = 0; |     virtual RefPtr<Inode> create_inode(InodeIdentifier parentInode, const String& name, mode_t, off_t size, dev_t, int& error) = 0; | ||||||
|     virtual RetainPtr<Inode> create_directory(InodeIdentifier parentInode, const String& name, mode_t, int& error) = 0; |     virtual RefPtr<Inode> create_directory(InodeIdentifier parentInode, const String& name, mode_t, int& error) = 0; | ||||||
| 
 | 
 | ||||||
|     virtual RetainPtr<Inode> get_inode(InodeIdentifier) const = 0; |     virtual RefPtr<Inode> get_inode(InodeIdentifier) const = 0; | ||||||
| 
 | 
 | ||||||
|     virtual void flush_writes() {} |     virtual void flush_writes() {} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ HashTable<Inode*>& all_inodes() | ||||||
| 
 | 
 | ||||||
| void Inode::sync() | void Inode::sync() | ||||||
| { | { | ||||||
|     Vector<Retained<Inode>, 32> inodes; |     Vector<NonnullRefPtr<Inode>, 32> inodes; | ||||||
|     { |     { | ||||||
|         InterruptDisabler disabler; |         InterruptDisabler disabler; | ||||||
|         for (auto* inode : all_inodes()) { |         for (auto* inode : all_inodes()) { | ||||||
|  |  | ||||||
|  | @ -85,6 +85,6 @@ private: | ||||||
|     FS& m_fs; |     FS& m_fs; | ||||||
|     unsigned m_index { 0 }; |     unsigned m_index { 0 }; | ||||||
|     WeakPtr<VMObject> m_vmo; |     WeakPtr<VMObject> m_vmo; | ||||||
|     RetainPtr<LocalSocket> m_socket; |     RefPtr<LocalSocket> m_socket; | ||||||
|     bool m_metadata_dirty { false }; |     bool m_metadata_dirty { false }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ | ||||||
| #include <Kernel/FileSystem/VirtualFileSystem.h> | #include <Kernel/FileSystem/VirtualFileSystem.h> | ||||||
| #include <Kernel/Process.h> | #include <Kernel/Process.h> | ||||||
| 
 | 
 | ||||||
| InodeFile::InodeFile(Retained<Inode>&& inode) | InodeFile::InodeFile(NonnullRefPtr<Inode>&& inode) | ||||||
|     : m_inode(move(inode)) |     : m_inode(move(inode)) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ class Inode; | ||||||
| 
 | 
 | ||||||
| class InodeFile final : public File { | class InodeFile final : public File { | ||||||
| public: | public: | ||||||
|     static Retained<InodeFile> create(Retained<Inode>&& inode) |     static NonnullRefPtr<InodeFile> create(NonnullRefPtr<Inode>&& inode) | ||||||
|     { |     { | ||||||
|         return adopt(*new InodeFile(move(inode))); |         return adopt(*new InodeFile(move(inode))); | ||||||
|     } |     } | ||||||
|  | @ -33,6 +33,6 @@ public: | ||||||
|     virtual bool is_inode() const override { return true; } |     virtual bool is_inode() const override { return true; } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     explicit InodeFile(Retained<Inode>&&); |     explicit InodeFile(NonnullRefPtr<Inode>&&); | ||||||
|     Retained<Inode> m_inode; |     NonnullRefPtr<Inode> m_inode; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -174,7 +174,7 @@ ProcFS& ProcFS::the() | ||||||
|     return *s_the; |     return *s_the; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<ProcFS> ProcFS::create() | NonnullRefPtr<ProcFS> ProcFS::create() | ||||||
| { | { | ||||||
|     return adopt(*new ProcFS); |     return adopt(*new ProcFS); | ||||||
| } | } | ||||||
|  | @ -614,7 +614,7 @@ ByteBuffer procfs$inodes(InodeIdentifier) | ||||||
|     extern HashTable<Inode*>& all_inodes(); |     extern HashTable<Inode*>& all_inodes(); | ||||||
|     StringBuilder builder; |     StringBuilder builder; | ||||||
|     for (auto it : all_inodes()) { |     for (auto it : all_inodes()) { | ||||||
|         RetainPtr<Inode> inode = *it; |         RefPtr<Inode> inode = *it; | ||||||
|         builder.appendf("Inode{K%x} %02u:%08u (%u)\n", inode.ptr(), inode->fsid(), inode->index(), inode->ref_count()); |         builder.appendf("Inode{K%x} %02u:%08u (%u)\n", inode.ptr(), inode->fsid(), inode->index(), inode->ref_count()); | ||||||
|     } |     } | ||||||
|     return builder.to_byte_buffer(); |     return builder.to_byte_buffer(); | ||||||
|  | @ -747,13 +747,13 @@ const char* ProcFS::class_name() const | ||||||
|     return "ProcFS"; |     return "ProcFS"; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Inode> ProcFS::create_inode(InodeIdentifier, const String&, mode_t, off_t, dev_t, int&) | RefPtr<Inode> ProcFS::create_inode(InodeIdentifier, const String&, mode_t, off_t, dev_t, int&) | ||||||
| { | { | ||||||
|     kprintf("FIXME: Implement ProcFS::create_inode()?\n"); |     kprintf("FIXME: Implement ProcFS::create_inode()?\n"); | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Inode> ProcFS::create_directory(InodeIdentifier, const String&, mode_t, int& error) | RefPtr<Inode> ProcFS::create_directory(InodeIdentifier, const String&, mode_t, int& error) | ||||||
| { | { | ||||||
|     error = -EROFS; |     error = -EROFS; | ||||||
|     return nullptr; |     return nullptr; | ||||||
|  | @ -764,7 +764,7 @@ InodeIdentifier ProcFS::root_inode() const | ||||||
|     return { fsid(), FI_Root }; |     return { fsid(), FI_Root }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Inode> ProcFS::get_inode(InodeIdentifier inode_id) const | RefPtr<Inode> ProcFS::get_inode(InodeIdentifier inode_id) const | ||||||
| { | { | ||||||
| #ifdef PROCFS_DEBUG | #ifdef PROCFS_DEBUG | ||||||
|     dbgprintf("ProcFS::get_inode(%u)\n", inode_id.index()); |     dbgprintf("ProcFS::get_inode(%u)\n", inode_id.index()); | ||||||
|  |  | ||||||
|  | @ -16,16 +16,16 @@ public: | ||||||
|     [[gnu::pure]] static ProcFS& the(); |     [[gnu::pure]] static ProcFS& the(); | ||||||
| 
 | 
 | ||||||
|     virtual ~ProcFS() override; |     virtual ~ProcFS() override; | ||||||
|     static Retained<ProcFS> create(); |     static NonnullRefPtr<ProcFS> create(); | ||||||
| 
 | 
 | ||||||
|     virtual bool initialize() override; |     virtual bool initialize() override; | ||||||
|     virtual const char* class_name() const override; |     virtual const char* class_name() const override; | ||||||
| 
 | 
 | ||||||
|     virtual InodeIdentifier root_inode() const override; |     virtual InodeIdentifier root_inode() const override; | ||||||
|     virtual RetainPtr<Inode> get_inode(InodeIdentifier) const override; |     virtual RefPtr<Inode> get_inode(InodeIdentifier) const override; | ||||||
| 
 | 
 | ||||||
|     virtual RetainPtr<Inode> create_inode(InodeIdentifier parent_id, const String& name, mode_t, off_t size, dev_t, int& error) override; |     virtual RefPtr<Inode> create_inode(InodeIdentifier parent_id, const String& name, mode_t, off_t size, dev_t, int& error) override; | ||||||
|     virtual RetainPtr<Inode> create_directory(InodeIdentifier parent_id, const String& name, mode_t, int& error) override; |     virtual RefPtr<Inode> create_directory(InodeIdentifier parent_id, const String& name, mode_t, int& error) override; | ||||||
| 
 | 
 | ||||||
|     void add_sys_file(String&&, Function<ByteBuffer(ProcFSInode&)>&& read_callback, Function<ssize_t(ProcFSInode&, const ByteBuffer&)>&& write_callback); |     void add_sys_file(String&&, Function<ByteBuffer(ProcFSInode&)>&& read_callback, Function<ssize_t(ProcFSInode&, const ByteBuffer&)>&& write_callback); | ||||||
|     void add_sys_bool(String&&, Lockable<bool>&, Function<void()>&& notify_callback = nullptr); |     void add_sys_bool(String&&, Lockable<bool>&, Function<void()>&& notify_callback = nullptr); | ||||||
|  | @ -36,7 +36,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     struct ProcFSDirectoryEntry { |     struct ProcFSDirectoryEntry { | ||||||
|         ProcFSDirectoryEntry() {} |         ProcFSDirectoryEntry() {} | ||||||
|         ProcFSDirectoryEntry(const char* a_name, unsigned a_proc_file_type, Function<ByteBuffer(InodeIdentifier)>&& a_read_callback = nullptr, Function<ssize_t(InodeIdentifier, const ByteBuffer&)>&& a_write_callback = nullptr, RetainPtr<ProcFSInode>&& a_inode = nullptr) |         ProcFSDirectoryEntry(const char* a_name, unsigned a_proc_file_type, Function<ByteBuffer(InodeIdentifier)>&& a_read_callback = nullptr, Function<ssize_t(InodeIdentifier, const ByteBuffer&)>&& a_write_callback = nullptr, RefPtr<ProcFSInode>&& a_inode = nullptr) | ||||||
|             : name(a_name) |             : name(a_name) | ||||||
|             , proc_file_type(a_proc_file_type) |             , proc_file_type(a_proc_file_type) | ||||||
|             , read_callback(move(a_read_callback)) |             , read_callback(move(a_read_callback)) | ||||||
|  | @ -49,7 +49,7 @@ private: | ||||||
|         unsigned proc_file_type { 0 }; |         unsigned proc_file_type { 0 }; | ||||||
|         Function<ByteBuffer(InodeIdentifier)> read_callback; |         Function<ByteBuffer(InodeIdentifier)> read_callback; | ||||||
|         Function<ssize_t(InodeIdentifier, const ByteBuffer&)> write_callback; |         Function<ssize_t(InodeIdentifier, const ByteBuffer&)> write_callback; | ||||||
|         RetainPtr<ProcFSInode> inode; |         RefPtr<ProcFSInode> inode; | ||||||
|         InodeIdentifier identifier(unsigned fsid) const; |         InodeIdentifier identifier(unsigned fsid) const; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | @ -60,7 +60,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     mutable Lock m_inodes_lock; |     mutable Lock m_inodes_lock; | ||||||
|     mutable HashMap<unsigned, ProcFSInode*> m_inodes; |     mutable HashMap<unsigned, ProcFSInode*> m_inodes; | ||||||
|     RetainPtr<ProcFSInode> m_root_inode; |     RefPtr<ProcFSInode> m_root_inode; | ||||||
|     Lockable<bool> m_kmalloc_stack_helper; |     Lockable<bool> m_kmalloc_stack_helper; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ | ||||||
| 
 | 
 | ||||||
| //#define SYNTHFS_DEBUG
 | //#define SYNTHFS_DEBUG
 | ||||||
| 
 | 
 | ||||||
| Retained<SynthFS> SynthFS::create() | NonnullRefPtr<SynthFS> SynthFS::create() | ||||||
| { | { | ||||||
|     return adopt(*new SynthFS); |     return adopt(*new SynthFS); | ||||||
| } | } | ||||||
|  | @ -33,7 +33,7 @@ bool SynthFS::initialize() | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<SynthFSInode> SynthFS::create_directory(String&& name) | NonnullRefPtr<SynthFSInode> SynthFS::create_directory(String&& name) | ||||||
| { | { | ||||||
|     auto file = adopt(*new SynthFSInode(*this, generate_inode_index())); |     auto file = adopt(*new SynthFSInode(*this, generate_inode_index())); | ||||||
|     file->m_name = move(name); |     file->m_name = move(name); | ||||||
|  | @ -45,7 +45,7 @@ Retained<SynthFSInode> SynthFS::create_directory(String&& name) | ||||||
|     return file; |     return file; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<SynthFSInode> SynthFS::create_text_file(String&& name, ByteBuffer&& contents, mode_t mode) | NonnullRefPtr<SynthFSInode> SynthFS::create_text_file(String&& name, ByteBuffer&& contents, mode_t mode) | ||||||
| { | { | ||||||
|     auto file = adopt(*new SynthFSInode(*this, generate_inode_index())); |     auto file = adopt(*new SynthFSInode(*this, generate_inode_index())); | ||||||
|     file->m_data = contents; |     file->m_data = contents; | ||||||
|  | @ -58,7 +58,7 @@ Retained<SynthFSInode> SynthFS::create_text_file(String&& name, ByteBuffer&& con | ||||||
|     return file; |     return file; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<SynthFSInode> SynthFS::create_generated_file(String&& name, Function<ByteBuffer(SynthFSInode&)>&& generator, mode_t mode) | NonnullRefPtr<SynthFSInode> SynthFS::create_generated_file(String&& name, Function<ByteBuffer(SynthFSInode&)>&& generator, mode_t mode) | ||||||
| { | { | ||||||
|     auto file = adopt(*new SynthFSInode(*this, generate_inode_index())); |     auto file = adopt(*new SynthFSInode(*this, generate_inode_index())); | ||||||
|     file->m_generator = move(generator); |     file->m_generator = move(generator); | ||||||
|  | @ -71,7 +71,7 @@ Retained<SynthFSInode> SynthFS::create_generated_file(String&& name, Function<By | ||||||
|     return file; |     return file; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<SynthFSInode> SynthFS::create_generated_file(String&& name, Function<ByteBuffer(SynthFSInode&)>&& read_callback, Function<ssize_t(SynthFSInode&, const ByteBuffer&)>&& write_callback, mode_t mode) | NonnullRefPtr<SynthFSInode> SynthFS::create_generated_file(String&& name, Function<ByteBuffer(SynthFSInode&)>&& read_callback, Function<ssize_t(SynthFSInode&, const ByteBuffer&)>&& write_callback, mode_t mode) | ||||||
| { | { | ||||||
|     auto file = adopt(*new SynthFSInode(*this, generate_inode_index())); |     auto file = adopt(*new SynthFSInode(*this, generate_inode_index())); | ||||||
|     file->m_generator = move(read_callback); |     file->m_generator = move(read_callback); | ||||||
|  | @ -85,7 +85,7 @@ Retained<SynthFSInode> SynthFS::create_generated_file(String&& name, Function<By | ||||||
|     return file; |     return file; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| InodeIdentifier SynthFS::add_file(RetainPtr<SynthFSInode>&& file, InodeIndex parent) | InodeIdentifier SynthFS::add_file(RefPtr<SynthFSInode>&& file, InodeIndex parent) | ||||||
| { | { | ||||||
|     LOCKER(m_lock); |     LOCKER(m_lock); | ||||||
|     ASSERT(file); |     ASSERT(file); | ||||||
|  | @ -138,7 +138,7 @@ InodeIdentifier SynthFS::root_inode() const | ||||||
|     return { fsid(), 1 }; |     return { fsid(), 1 }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Inode> SynthFS::create_inode(InodeIdentifier parentInode, const String& name, mode_t mode, off_t size, dev_t, int& error) | RefPtr<Inode> SynthFS::create_inode(InodeIdentifier parentInode, const String& name, mode_t mode, off_t size, dev_t, int& error) | ||||||
| { | { | ||||||
|     (void)parentInode; |     (void)parentInode; | ||||||
|     (void)name; |     (void)name; | ||||||
|  | @ -149,7 +149,7 @@ RetainPtr<Inode> SynthFS::create_inode(InodeIdentifier parentInode, const String | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Inode> SynthFS::create_directory(InodeIdentifier, const String&, mode_t, int& error) | RefPtr<Inode> SynthFS::create_directory(InodeIdentifier, const String&, mode_t, int& error) | ||||||
| { | { | ||||||
|     error = -EROFS; |     error = -EROFS; | ||||||
|     return nullptr; |     return nullptr; | ||||||
|  | @ -161,7 +161,7 @@ auto SynthFS::generate_inode_index() -> InodeIndex | ||||||
|     return m_next_inode_index++; |     return m_next_inode_index++; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Inode> SynthFS::get_inode(InodeIdentifier inode) const | RefPtr<Inode> SynthFS::get_inode(InodeIdentifier inode) const | ||||||
| { | { | ||||||
|     LOCKER(m_lock); |     LOCKER(m_lock); | ||||||
|     auto it = m_inodes.find(inode.index()); |     auto it = m_inodes.find(inode.index()); | ||||||
|  |  | ||||||
|  | @ -10,14 +10,14 @@ class SynthFSInode; | ||||||
| class SynthFS : public FS { | class SynthFS : public FS { | ||||||
| public: | public: | ||||||
|     virtual ~SynthFS() override; |     virtual ~SynthFS() override; | ||||||
|     static Retained<SynthFS> create(); |     static NonnullRefPtr<SynthFS> create(); | ||||||
| 
 | 
 | ||||||
|     virtual bool initialize() override; |     virtual bool initialize() override; | ||||||
|     virtual const char* class_name() const override; |     virtual const char* class_name() const override; | ||||||
|     virtual InodeIdentifier root_inode() const override; |     virtual InodeIdentifier root_inode() const override; | ||||||
|     virtual RetainPtr<Inode> create_inode(InodeIdentifier parentInode, const String& name, mode_t, off_t size, dev_t, int& error) override; |     virtual RefPtr<Inode> create_inode(InodeIdentifier parentInode, const String& name, mode_t, off_t size, dev_t, int& error) override; | ||||||
|     virtual RetainPtr<Inode> create_directory(InodeIdentifier parentInode, const String& name, mode_t, int& error) override; |     virtual RefPtr<Inode> create_directory(InodeIdentifier parentInode, const String& name, mode_t, int& error) override; | ||||||
|     virtual RetainPtr<Inode> get_inode(InodeIdentifier) const override; |     virtual RefPtr<Inode> get_inode(InodeIdentifier) const override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|     typedef unsigned InodeIndex; |     typedef unsigned InodeIndex; | ||||||
|  | @ -27,17 +27,17 @@ protected: | ||||||
| 
 | 
 | ||||||
|     SynthFS(); |     SynthFS(); | ||||||
| 
 | 
 | ||||||
|     Retained<SynthFSInode> create_directory(String&& name); |     NonnullRefPtr<SynthFSInode> create_directory(String&& name); | ||||||
|     Retained<SynthFSInode> create_text_file(String&& name, ByteBuffer&&, mode_t = 0010644); |     NonnullRefPtr<SynthFSInode> create_text_file(String&& name, ByteBuffer&&, mode_t = 0010644); | ||||||
|     Retained<SynthFSInode> create_generated_file(String&& name, Function<ByteBuffer(SynthFSInode&)>&&, mode_t = 0100644); |     NonnullRefPtr<SynthFSInode> create_generated_file(String&& name, Function<ByteBuffer(SynthFSInode&)>&&, mode_t = 0100644); | ||||||
|     Retained<SynthFSInode> create_generated_file(String&& name, Function<ByteBuffer(SynthFSInode&)>&&, Function<ssize_t(SynthFSInode&, const ByteBuffer&)>&&, mode_t = 0100644); |     NonnullRefPtr<SynthFSInode> create_generated_file(String&& name, Function<ByteBuffer(SynthFSInode&)>&&, Function<ssize_t(SynthFSInode&, const ByteBuffer&)>&&, mode_t = 0100644); | ||||||
| 
 | 
 | ||||||
|     InodeIdentifier add_file(RetainPtr<SynthFSInode>&&, InodeIndex parent = RootInodeIndex); |     InodeIdentifier add_file(RefPtr<SynthFSInode>&&, InodeIndex parent = RootInodeIndex); | ||||||
|     bool remove_file(InodeIndex); |     bool remove_file(InodeIndex); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     InodeIndex m_next_inode_index { 2 }; |     InodeIndex m_next_inode_index { 2 }; | ||||||
|     HashMap<InodeIndex, RetainPtr<SynthFSInode>> m_inodes; |     HashMap<InodeIndex, RefPtr<SynthFSInode>> m_inodes; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct SynthFSInodeCustomData { | struct SynthFSInodeCustomData { | ||||||
|  |  | ||||||
|  | @ -36,7 +36,7 @@ InodeIdentifier VFS::root_inode_id() const | ||||||
|     return m_root_inode->identifier(); |     return m_root_inode->identifier(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool VFS::mount(Retained<FS>&& file_system, StringView path) | bool VFS::mount(NonnullRefPtr<FS>&& file_system, StringView path) | ||||||
| { | { | ||||||
|     auto result = resolve_path(path, root_custody()); |     auto result = resolve_path(path, root_custody()); | ||||||
|     if (result.is_error()) { |     if (result.is_error()) { | ||||||
|  | @ -53,7 +53,7 @@ bool VFS::mount(Retained<FS>&& file_system, StringView path) | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool VFS::mount_root(Retained<FS>&& file_system) | bool VFS::mount_root(NonnullRefPtr<FS>&& file_system) | ||||||
| { | { | ||||||
|     if (m_root_inode) { |     if (m_root_inode) { | ||||||
|         kprintf("VFS: mount_root can't mount another root\n"); |         kprintf("VFS: mount_root can't mount another root\n"); | ||||||
|  | @ -149,9 +149,9 @@ KResult VFS::stat(StringView path, int options, Custody& base, struct stat& stat | ||||||
|     return custody_or_error.value()->inode().metadata().stat(statbuf); |     return custody_or_error.value()->inode().metadata().stat(statbuf); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| KResultOr<Retained<FileDescription>> VFS::open(StringView path, int options, mode_t mode, Custody& base) | KResultOr<NonnullRefPtr<FileDescription>> VFS::open(StringView path, int options, mode_t mode, Custody& base) | ||||||
| { | { | ||||||
|     RetainPtr<Custody> parent_custody; |     RefPtr<Custody> parent_custody; | ||||||
|     auto custody_or_error = resolve_path(path, base, &parent_custody, options); |     auto custody_or_error = resolve_path(path, base, &parent_custody, options); | ||||||
|     if (options & O_CREAT) { |     if (options & O_CREAT) { | ||||||
|         if (!parent_custody) |         if (!parent_custody) | ||||||
|  | @ -208,7 +208,7 @@ KResult VFS::mknod(StringView path, mode_t mode, dev_t dev, Custody& base) | ||||||
|     if (!is_regular_file(mode) && !is_block_device(mode) && !is_character_device(mode) && !is_fifo(mode) && !is_socket(mode)) |     if (!is_regular_file(mode) && !is_block_device(mode) && !is_character_device(mode) && !is_fifo(mode) && !is_socket(mode)) | ||||||
|         return KResult(-EINVAL); |         return KResult(-EINVAL); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Custody> parent_custody; |     RefPtr<Custody> parent_custody; | ||||||
|     auto existing_file_or_error = resolve_path(path, base, &parent_custody); |     auto existing_file_or_error = resolve_path(path, base, &parent_custody); | ||||||
|     if (!existing_file_or_error.is_error()) |     if (!existing_file_or_error.is_error()) | ||||||
|         return KResult(-EEXIST); |         return KResult(-EEXIST); | ||||||
|  | @ -230,7 +230,7 @@ KResult VFS::mknod(StringView path, mode_t mode, dev_t dev, Custody& base) | ||||||
|     return KSuccess; |     return KSuccess; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| KResultOr<Retained<FileDescription>> VFS::create(StringView path, int options, mode_t mode, Custody& parent_custody) | KResultOr<NonnullRefPtr<FileDescription>> VFS::create(StringView path, int options, mode_t mode, Custody& parent_custody) | ||||||
| { | { | ||||||
|     (void)options; |     (void)options; | ||||||
| 
 | 
 | ||||||
|  | @ -255,7 +255,7 @@ KResultOr<Retained<FileDescription>> VFS::create(StringView path, int options, m | ||||||
| 
 | 
 | ||||||
| KResult VFS::mkdir(StringView path, mode_t mode, Custody& base) | KResult VFS::mkdir(StringView path, mode_t mode, Custody& base) | ||||||
| { | { | ||||||
|     RetainPtr<Custody> parent_custody; |     RefPtr<Custody> parent_custody; | ||||||
|     auto result = resolve_path(path, base, &parent_custody); |     auto result = resolve_path(path, base, &parent_custody); | ||||||
|     if (!result.is_error()) |     if (!result.is_error()) | ||||||
|         return KResult(-EEXIST); |         return KResult(-EEXIST); | ||||||
|  | @ -300,7 +300,7 @@ KResult VFS::access(StringView path, int mode, Custody& base) | ||||||
|     return KSuccess; |     return KSuccess; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| KResultOr<Retained<Custody>> VFS::open_directory(StringView path, Custody& base) | KResultOr<NonnullRefPtr<Custody>> VFS::open_directory(StringView path, Custody& base) | ||||||
| { | { | ||||||
|     auto inode_or_error = resolve_path(path, base); |     auto inode_or_error = resolve_path(path, base); | ||||||
|     if (inode_or_error.is_error()) |     if (inode_or_error.is_error()) | ||||||
|  | @ -339,14 +339,14 @@ KResult VFS::chmod(StringView path, mode_t mode, Custody& base) | ||||||
| 
 | 
 | ||||||
| KResult VFS::rename(StringView old_path, StringView new_path, Custody& base) | KResult VFS::rename(StringView old_path, StringView new_path, Custody& base) | ||||||
| { | { | ||||||
|     RetainPtr<Custody> old_parent_custody; |     RefPtr<Custody> old_parent_custody; | ||||||
|     auto old_custody_or_error = resolve_path(old_path, base, &old_parent_custody); |     auto old_custody_or_error = resolve_path(old_path, base, &old_parent_custody); | ||||||
|     if (old_custody_or_error.is_error()) |     if (old_custody_or_error.is_error()) | ||||||
|         return old_custody_or_error.error(); |         return old_custody_or_error.error(); | ||||||
|     auto& old_custody = *old_custody_or_error.value(); |     auto& old_custody = *old_custody_or_error.value(); | ||||||
|     auto& old_inode = old_custody.inode(); |     auto& old_inode = old_custody.inode(); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Custody> new_parent_custody; |     RefPtr<Custody> new_parent_custody; | ||||||
|     auto new_custody_or_error = resolve_path(new_path, base, &new_parent_custody); |     auto new_custody_or_error = resolve_path(new_path, base, &new_parent_custody); | ||||||
|     if (new_custody_or_error.is_error()) { |     if (new_custody_or_error.is_error()) { | ||||||
|         if (new_custody_or_error.error() != -ENOENT) |         if (new_custody_or_error.error() != -ENOENT) | ||||||
|  | @ -445,7 +445,7 @@ KResult VFS::link(StringView old_path, StringView new_path, Custody& base) | ||||||
|     auto& old_custody = *old_custody_or_error.value(); |     auto& old_custody = *old_custody_or_error.value(); | ||||||
|     auto& old_inode = old_custody.inode(); |     auto& old_inode = old_custody.inode(); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Custody> parent_custody; |     RefPtr<Custody> parent_custody; | ||||||
|     auto new_custody_or_error = resolve_path(new_path, base, &parent_custody); |     auto new_custody_or_error = resolve_path(new_path, base, &parent_custody); | ||||||
|     if (!new_custody_or_error.is_error()) |     if (!new_custody_or_error.is_error()) | ||||||
|         return KResult(-EEXIST); |         return KResult(-EEXIST); | ||||||
|  | @ -469,7 +469,7 @@ KResult VFS::link(StringView old_path, StringView new_path, Custody& base) | ||||||
| 
 | 
 | ||||||
| KResult VFS::unlink(StringView path, Custody& base) | KResult VFS::unlink(StringView path, Custody& base) | ||||||
| { | { | ||||||
|     RetainPtr<Custody> parent_custody; |     RefPtr<Custody> parent_custody; | ||||||
|     auto custody_or_error = resolve_path(path, base, &parent_custody); |     auto custody_or_error = resolve_path(path, base, &parent_custody); | ||||||
|     if (custody_or_error.is_error()) |     if (custody_or_error.is_error()) | ||||||
|         return custody_or_error.error(); |         return custody_or_error.error(); | ||||||
|  | @ -498,7 +498,7 @@ KResult VFS::unlink(StringView path, Custody& base) | ||||||
| 
 | 
 | ||||||
| KResult VFS::symlink(StringView target, StringView linkpath, Custody& base) | KResult VFS::symlink(StringView target, StringView linkpath, Custody& base) | ||||||
| { | { | ||||||
|     RetainPtr<Custody> parent_custody; |     RefPtr<Custody> parent_custody; | ||||||
|     auto existing_custody_or_error = resolve_path(linkpath, base, &parent_custody); |     auto existing_custody_or_error = resolve_path(linkpath, base, &parent_custody); | ||||||
|     if (!existing_custody_or_error.is_error()) |     if (!existing_custody_or_error.is_error()) | ||||||
|         return KResult(-EEXIST); |         return KResult(-EEXIST); | ||||||
|  | @ -524,7 +524,7 @@ KResult VFS::symlink(StringView target, StringView linkpath, Custody& base) | ||||||
| 
 | 
 | ||||||
| KResult VFS::rmdir(StringView path, Custody& base) | KResult VFS::rmdir(StringView path, Custody& base) | ||||||
| { | { | ||||||
|     RetainPtr<Custody> parent_custody; |     RefPtr<Custody> parent_custody; | ||||||
|     auto custody_or_error = resolve_path(path, base, &parent_custody); |     auto custody_or_error = resolve_path(path, base, &parent_custody); | ||||||
|     if (custody_or_error.is_error()) |     if (custody_or_error.is_error()) | ||||||
|         return KResult(custody_or_error.error()); |         return KResult(custody_or_error.error()); | ||||||
|  | @ -559,14 +559,14 @@ KResult VFS::rmdir(StringView path, Custody& base) | ||||||
|     return parent_inode.remove_child(FileSystemPath(path).basename()); |     return parent_inode.remove_child(FileSystemPath(path).basename()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Inode> VFS::get_inode(InodeIdentifier inode_id) | RefPtr<Inode> VFS::get_inode(InodeIdentifier inode_id) | ||||||
| { | { | ||||||
|     if (!inode_id.is_valid()) |     if (!inode_id.is_valid()) | ||||||
|         return nullptr; |         return nullptr; | ||||||
|     return inode_id.fs()->get_inode(inode_id); |     return inode_id.fs()->get_inode(inode_id); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| VFS::Mount::Mount(RetainPtr<Custody>&& host_custody, Retained<FS>&& guest_fs) | VFS::Mount::Mount(RefPtr<Custody>&& host_custody, NonnullRefPtr<FS>&& guest_fs) | ||||||
|     : m_guest(guest_fs->root_inode()) |     : m_guest(guest_fs->root_inode()) | ||||||
|     , m_guest_fs(move(guest_fs)) |     , m_guest_fs(move(guest_fs)) | ||||||
|     , m_host_custody(move(host_custody)) |     , m_host_custody(move(host_custody)) | ||||||
|  | @ -624,7 +624,7 @@ Custody& VFS::root_custody() | ||||||
|     return *m_root_custody; |     return *m_root_custody; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| KResultOr<Retained<Custody>> VFS::resolve_path(StringView path, Custody& base, RetainPtr<Custody>* parent_custody, int options) | KResultOr<NonnullRefPtr<Custody>> VFS::resolve_path(StringView path, Custody& base, RefPtr<Custody>* parent_custody, int options) | ||||||
| { | { | ||||||
|     if (path.is_empty()) |     if (path.is_empty()) | ||||||
|         return KResult(-EINVAL); |         return KResult(-EINVAL); | ||||||
|  | @ -632,7 +632,7 @@ KResultOr<Retained<Custody>> VFS::resolve_path(StringView path, Custody& base, R | ||||||
|     auto parts = path.split_view('/'); |     auto parts = path.split_view('/'); | ||||||
|     InodeIdentifier crumb_id; |     InodeIdentifier crumb_id; | ||||||
| 
 | 
 | ||||||
|     Vector<Retained<Custody>, 32> custody_chain; |     Vector<NonnullRefPtr<Custody>, 32> custody_chain; | ||||||
| 
 | 
 | ||||||
|     if (path[0] == '/') { |     if (path[0] == '/') { | ||||||
|         custody_chain.append(root_custody()); |         custody_chain.append(root_custody()); | ||||||
|  |  | ||||||
|  | @ -35,7 +35,7 @@ class VFS { | ||||||
| public: | public: | ||||||
|     class Mount { |     class Mount { | ||||||
|     public: |     public: | ||||||
|         Mount(RetainPtr<Custody>&&, Retained<FS>&&); |         Mount(RefPtr<Custody>&&, NonnullRefPtr<FS>&&); | ||||||
| 
 | 
 | ||||||
|         InodeIdentifier host() const; |         InodeIdentifier host() const; | ||||||
|         InodeIdentifier guest() const { return m_guest; } |         InodeIdentifier guest() const { return m_guest; } | ||||||
|  | @ -47,8 +47,8 @@ public: | ||||||
|     private: |     private: | ||||||
|         InodeIdentifier m_host; |         InodeIdentifier m_host; | ||||||
|         InodeIdentifier m_guest; |         InodeIdentifier m_guest; | ||||||
|         Retained<FS> m_guest_fs; |         NonnullRefPtr<FS> m_guest_fs; | ||||||
|         RetainPtr<Custody> m_host_custody; |         RefPtr<Custody> m_host_custody; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     [[gnu::pure]] static VFS& the(); |     [[gnu::pure]] static VFS& the(); | ||||||
|  | @ -56,12 +56,12 @@ public: | ||||||
|     VFS(); |     VFS(); | ||||||
|     ~VFS(); |     ~VFS(); | ||||||
| 
 | 
 | ||||||
|     bool mount_root(Retained<FS>&&); |     bool mount_root(NonnullRefPtr<FS>&&); | ||||||
|     bool mount(Retained<FS>&&, StringView path); |     bool mount(NonnullRefPtr<FS>&&, StringView path); | ||||||
| 
 | 
 | ||||||
|     KResultOr<Retained<FileDescription>> open(RetainPtr<Device>&&, int options); |     KResultOr<NonnullRefPtr<FileDescription>> open(RefPtr<Device>&&, int options); | ||||||
|     KResultOr<Retained<FileDescription>> open(StringView path, int options, mode_t mode, Custody& base); |     KResultOr<NonnullRefPtr<FileDescription>> open(StringView path, int options, mode_t mode, Custody& base); | ||||||
|     KResultOr<Retained<FileDescription>> create(StringView path, int options, mode_t mode, Custody& parent_custody); |     KResultOr<NonnullRefPtr<FileDescription>> create(StringView path, int options, mode_t mode, Custody& parent_custody); | ||||||
|     KResult mkdir(StringView path, mode_t mode, Custody& base); |     KResult mkdir(StringView path, mode_t mode, Custody& base); | ||||||
|     KResult link(StringView old_path, StringView new_path, Custody& base); |     KResult link(StringView old_path, StringView new_path, Custody& base); | ||||||
|     KResult unlink(StringView path, Custody& base); |     KResult unlink(StringView path, Custody& base); | ||||||
|  | @ -76,7 +76,7 @@ public: | ||||||
|     KResult utime(StringView path, Custody& base, time_t atime, time_t mtime); |     KResult utime(StringView path, Custody& base, time_t atime, time_t mtime); | ||||||
|     KResult rename(StringView oldpath, StringView newpath, Custody& base); |     KResult rename(StringView oldpath, StringView newpath, Custody& base); | ||||||
|     KResult mknod(StringView path, mode_t, dev_t, Custody& base); |     KResult mknod(StringView path, mode_t, dev_t, Custody& base); | ||||||
|     KResultOr<Retained<Custody>> open_directory(StringView path, Custody& base); |     KResultOr<NonnullRefPtr<Custody>> open_directory(StringView path, Custody& base); | ||||||
| 
 | 
 | ||||||
|     void register_device(Badge<Device>, Device&); |     void register_device(Badge<Device>, Device&); | ||||||
|     void unregister_device(Badge<Device>, Device&); |     void unregister_device(Badge<Device>, Device&); | ||||||
|  | @ -91,12 +91,12 @@ public: | ||||||
|     Device* get_device(unsigned major, unsigned minor); |     Device* get_device(unsigned major, unsigned minor); | ||||||
| 
 | 
 | ||||||
|     Custody& root_custody(); |     Custody& root_custody(); | ||||||
|     KResultOr<Retained<Custody>> resolve_path(StringView path, Custody& base, RetainPtr<Custody>* parent = nullptr, int options = 0); |     KResultOr<NonnullRefPtr<Custody>> resolve_path(StringView path, Custody& base, RefPtr<Custody>* parent = nullptr, int options = 0); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     friend class FileDescription; |     friend class FileDescription; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Inode> get_inode(InodeIdentifier); |     RefPtr<Inode> get_inode(InodeIdentifier); | ||||||
| 
 | 
 | ||||||
|     bool is_vfs_root(InodeIdentifier) const; |     bool is_vfs_root(InodeIdentifier) const; | ||||||
| 
 | 
 | ||||||
|  | @ -105,9 +105,9 @@ private: | ||||||
|     Mount* find_mount_for_host(InodeIdentifier); |     Mount* find_mount_for_host(InodeIdentifier); | ||||||
|     Mount* find_mount_for_guest(InodeIdentifier); |     Mount* find_mount_for_guest(InodeIdentifier); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Inode> m_root_inode; |     RefPtr<Inode> m_root_inode; | ||||||
|     Vector<OwnPtr<Mount>> m_mounts; |     Vector<OwnPtr<Mount>> m_mounts; | ||||||
|     HashMap<dword, Device*> m_devices; |     HashMap<dword, Device*> m_devices; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Custody> m_root_custody; |     RefPtr<Custody> m_root_custody; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -23,7 +23,7 @@ Lockable<HashTable<IPv4Socket*>>& IPv4Socket::all_sockets() | ||||||
|     return *s_table; |     return *s_table; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<IPv4Socket> IPv4Socket::create(int type, int protocol) | NonnullRefPtr<IPv4Socket> IPv4Socket::create(int type, int protocol) | ||||||
| { | { | ||||||
|     if (type == SOCK_STREAM) |     if (type == SOCK_STREAM) | ||||||
|         return TCPSocket::create(protocol); |         return TCPSocket::create(protocol); | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ class TCPSocket; | ||||||
| 
 | 
 | ||||||
| class IPv4Socket : public Socket { | class IPv4Socket : public Socket { | ||||||
| public: | public: | ||||||
|     static Retained<IPv4Socket> create(int type, int protocol); |     static NonnullRefPtr<IPv4Socket> create(int type, int protocol); | ||||||
|     virtual ~IPv4Socket() override; |     virtual ~IPv4Socket() override; | ||||||
| 
 | 
 | ||||||
|     static Lockable<HashTable<IPv4Socket*>>& all_sockets(); |     static Lockable<HashTable<IPv4Socket*>>& all_sockets(); | ||||||
|  | @ -88,7 +88,7 @@ class IPv4SocketHandle : public SocketHandle { | ||||||
| public: | public: | ||||||
|     IPv4SocketHandle() {} |     IPv4SocketHandle() {} | ||||||
| 
 | 
 | ||||||
|     IPv4SocketHandle(RetainPtr<IPv4Socket>&& socket) |     IPv4SocketHandle(RefPtr<IPv4Socket>&& socket) | ||||||
|         : SocketHandle(move(socket)) |         : SocketHandle(move(socket)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
| 
 | 
 | ||||||
| //#define DEBUG_LOCAL_SOCKET
 | //#define DEBUG_LOCAL_SOCKET
 | ||||||
| 
 | 
 | ||||||
| Retained<LocalSocket> LocalSocket::create(int type) | NonnullRefPtr<LocalSocket> LocalSocket::create(int type) | ||||||
| { | { | ||||||
|     return adopt(*new LocalSocket(type)); |     return adopt(*new LocalSocket(type)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ class FileDescription; | ||||||
| 
 | 
 | ||||||
| class LocalSocket final : public Socket { | class LocalSocket final : public Socket { | ||||||
| public: | public: | ||||||
|     static Retained<LocalSocket> create(int type); |     static NonnullRefPtr<LocalSocket> create(int type); | ||||||
|     virtual ~LocalSocket() override; |     virtual ~LocalSocket() override; | ||||||
| 
 | 
 | ||||||
|     virtual KResult bind(const sockaddr*, socklen_t) override; |     virtual KResult bind(const sockaddr*, socklen_t) override; | ||||||
|  | @ -28,7 +28,7 @@ private: | ||||||
|     virtual bool is_local() const override { return true; } |     virtual bool is_local() const override { return true; } | ||||||
|     bool has_attached_peer(const FileDescription&) const; |     bool has_attached_peer(const FileDescription&) const; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<FileDescription> m_file; |     RefPtr<FileDescription> m_file; | ||||||
| 
 | 
 | ||||||
|     bool m_bound { false }; |     bool m_bound { false }; | ||||||
|     int m_accepted_fds_open { 0 }; |     int m_accepted_fds_open { 0 }; | ||||||
|  |  | ||||||
|  | @ -209,7 +209,7 @@ void handle_icmp(const EthernetFrameHeader& eth, int frame_size) | ||||||
| 
 | 
 | ||||||
|     { |     { | ||||||
|         LOCKER(IPv4Socket::all_sockets().lock()); |         LOCKER(IPv4Socket::all_sockets().lock()); | ||||||
|         for (RetainPtr<IPv4Socket> socket : IPv4Socket::all_sockets().resource()) { |         for (RefPtr<IPv4Socket> socket : IPv4Socket::all_sockets().resource()) { | ||||||
|             LOCKER(socket->lock()); |             LOCKER(socket->lock()); | ||||||
|             if (socket->protocol() != (unsigned)IPv4Protocol::ICMP) |             if (socket->protocol() != (unsigned)IPv4Protocol::ICMP) | ||||||
|                 continue; |                 continue; | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| #include <Kernel/UnixTypes.h> | #include <Kernel/UnixTypes.h> | ||||||
| #include <LibC/errno_numbers.h> | #include <LibC/errno_numbers.h> | ||||||
| 
 | 
 | ||||||
| KResultOr<Retained<Socket>> Socket::create(int domain, int type, int protocol) | KResultOr<NonnullRefPtr<Socket>> Socket::create(int domain, int type, int protocol) | ||||||
| { | { | ||||||
|     (void)protocol; |     (void)protocol; | ||||||
|     switch (domain) { |     switch (domain) { | ||||||
|  | @ -41,7 +41,7 @@ KResult Socket::listen(int backlog) | ||||||
|     return KSuccess; |     return KSuccess; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Socket> Socket::accept() | RefPtr<Socket> Socket::accept() | ||||||
| { | { | ||||||
|     LOCKER(m_lock); |     LOCKER(m_lock); | ||||||
|     if (m_pending.is_empty()) |     if (m_pending.is_empty()) | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ class FileDescription; | ||||||
| 
 | 
 | ||||||
| class Socket : public File { | class Socket : public File { | ||||||
| public: | public: | ||||||
|     static KResultOr<Retained<Socket>> create(int domain, int type, int protocol); |     static KResultOr<NonnullRefPtr<Socket>> create(int domain, int type, int protocol); | ||||||
|     virtual ~Socket() override; |     virtual ~Socket() override; | ||||||
| 
 | 
 | ||||||
|     int domain() const { return m_domain; } |     int domain() const { return m_domain; } | ||||||
|  | @ -33,7 +33,7 @@ public: | ||||||
|     int protocol() const { return m_protocol; } |     int protocol() const { return m_protocol; } | ||||||
| 
 | 
 | ||||||
|     bool can_accept() const { return !m_pending.is_empty(); } |     bool can_accept() const { return !m_pending.is_empty(); } | ||||||
|     RetainPtr<Socket> accept(); |     RefPtr<Socket> accept(); | ||||||
|     bool is_connected() const { return m_connected; } |     bool is_connected() const { return m_connected; } | ||||||
|     KResult listen(int backlog); |     KResult listen(int backlog); | ||||||
| 
 | 
 | ||||||
|  | @ -89,14 +89,14 @@ private: | ||||||
|     timeval m_receive_deadline { 0, 0 }; |     timeval m_receive_deadline { 0, 0 }; | ||||||
|     timeval m_send_deadline { 0, 0 }; |     timeval m_send_deadline { 0, 0 }; | ||||||
| 
 | 
 | ||||||
|     Vector<RetainPtr<Socket>> m_pending; |     Vector<RefPtr<Socket>> m_pending; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class SocketHandle { | class SocketHandle { | ||||||
| public: | public: | ||||||
|     SocketHandle() {} |     SocketHandle() {} | ||||||
| 
 | 
 | ||||||
|     SocketHandle(RetainPtr<Socket>&& socket) |     SocketHandle(RefPtr<Socket>&& socket) | ||||||
|         : m_socket(move(socket)) |         : m_socket(move(socket)) | ||||||
|     { |     { | ||||||
|         if (m_socket) |         if (m_socket) | ||||||
|  | @ -126,5 +126,5 @@ public: | ||||||
|     const Socket& socket() const { return *m_socket; } |     const Socket& socket() const { return *m_socket; } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     RetainPtr<Socket> m_socket; |     RefPtr<Socket> m_socket; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ Lockable<HashMap<word, TCPSocket*>>& TCPSocket::sockets_by_port() | ||||||
| 
 | 
 | ||||||
| TCPSocketHandle TCPSocket::from_port(word port) | TCPSocketHandle TCPSocket::from_port(word port) | ||||||
| { | { | ||||||
|     RetainPtr<TCPSocket> socket; |     RefPtr<TCPSocket> socket; | ||||||
|     { |     { | ||||||
|         LOCKER(sockets_by_port().lock()); |         LOCKER(sockets_by_port().lock()); | ||||||
|         auto it = sockets_by_port().resource().find(port); |         auto it = sockets_by_port().resource().find(port); | ||||||
|  | @ -38,7 +38,7 @@ TCPSocket::~TCPSocket() | ||||||
|     sockets_by_port().resource().remove(local_port()); |     sockets_by_port().resource().remove(local_port()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<TCPSocket> TCPSocket::create(int protocol) | NonnullRefPtr<TCPSocket> TCPSocket::create(int protocol) | ||||||
| { | { | ||||||
|     return adopt(*new TCPSocket(protocol)); |     return adopt(*new TCPSocket(protocol)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ | ||||||
| 
 | 
 | ||||||
| class TCPSocket final : public IPv4Socket { | class TCPSocket final : public IPv4Socket { | ||||||
| public: | public: | ||||||
|     static Retained<TCPSocket> create(int protocol); |     static NonnullRefPtr<TCPSocket> create(int protocol); | ||||||
|     virtual ~TCPSocket() override; |     virtual ~TCPSocket() override; | ||||||
| 
 | 
 | ||||||
|     enum class State { |     enum class State { | ||||||
|  | @ -49,7 +49,7 @@ class TCPSocketHandle : public SocketHandle { | ||||||
| public: | public: | ||||||
|     TCPSocketHandle() {} |     TCPSocketHandle() {} | ||||||
| 
 | 
 | ||||||
|     TCPSocketHandle(RetainPtr<TCPSocket>&& socket) |     TCPSocketHandle(RefPtr<TCPSocket>&& socket) | ||||||
|         : SocketHandle(move(socket)) |         : SocketHandle(move(socket)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ Lockable<HashMap<word, UDPSocket*>>& UDPSocket::sockets_by_port() | ||||||
| 
 | 
 | ||||||
| UDPSocketHandle UDPSocket::from_port(word port) | UDPSocketHandle UDPSocket::from_port(word port) | ||||||
| { | { | ||||||
|     RetainPtr<UDPSocket> socket; |     RefPtr<UDPSocket> socket; | ||||||
|     { |     { | ||||||
|         LOCKER(sockets_by_port().lock()); |         LOCKER(sockets_by_port().lock()); | ||||||
|         auto it = sockets_by_port().resource().find(port); |         auto it = sockets_by_port().resource().find(port); | ||||||
|  | @ -38,7 +38,7 @@ UDPSocket::~UDPSocket() | ||||||
|     sockets_by_port().resource().remove(local_port()); |     sockets_by_port().resource().remove(local_port()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Retained<UDPSocket> UDPSocket::create(int protocol) | NonnullRefPtr<UDPSocket> UDPSocket::create(int protocol) | ||||||
| { | { | ||||||
|     return adopt(*new UDPSocket(protocol)); |     return adopt(*new UDPSocket(protocol)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ class UDPSocketHandle; | ||||||
| 
 | 
 | ||||||
| class UDPSocket final : public IPv4Socket { | class UDPSocket final : public IPv4Socket { | ||||||
| public: | public: | ||||||
|     static Retained<UDPSocket> create(int protocol); |     static NonnullRefPtr<UDPSocket> create(int protocol); | ||||||
|     virtual ~UDPSocket() override; |     virtual ~UDPSocket() override; | ||||||
| 
 | 
 | ||||||
|     static UDPSocketHandle from_port(word); |     static UDPSocketHandle from_port(word); | ||||||
|  | @ -27,7 +27,7 @@ class UDPSocketHandle : public SocketHandle { | ||||||
| public: | public: | ||||||
|     UDPSocketHandle() {} |     UDPSocketHandle() {} | ||||||
| 
 | 
 | ||||||
|     UDPSocketHandle(RetainPtr<UDPSocket>&& socket) |     UDPSocketHandle(RefPtr<UDPSocket>&& socket) | ||||||
|         : SocketHandle(move(socket)) |         : SocketHandle(move(socket)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -105,7 +105,7 @@ Region* Process::allocate_region(VirtualAddress vaddr, size_t size, const String | ||||||
|     return m_regions.last().ptr(); |     return m_regions.last().ptr(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Region* Process::allocate_file_backed_region(VirtualAddress vaddr, size_t size, RetainPtr<Inode>&& inode, const String& name, int prot) | Region* Process::allocate_file_backed_region(VirtualAddress vaddr, size_t size, RefPtr<Inode>&& inode, const String& name, int prot) | ||||||
| { | { | ||||||
|     auto range = allocate_range(vaddr, size); |     auto range = allocate_range(vaddr, size); | ||||||
|     if (!range.is_valid()) |     if (!range.is_valid()) | ||||||
|  | @ -115,7 +115,7 @@ Region* Process::allocate_file_backed_region(VirtualAddress vaddr, size_t size, | ||||||
|     return m_regions.last().ptr(); |     return m_regions.last().ptr(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Region* Process::allocate_region_with_vmo(VirtualAddress vaddr, size_t size, Retained<VMObject>&& vmo, size_t offset_in_vmo, const String& name, int prot) | Region* Process::allocate_region_with_vmo(VirtualAddress vaddr, size_t size, NonnullRefPtr<VMObject>&& vmo, size_t offset_in_vmo, const String& name, int prot) | ||||||
| { | { | ||||||
|     auto range = allocate_range(vaddr, size); |     auto range = allocate_range(vaddr, size); | ||||||
|     if (!range.is_valid()) |     if (!range.is_valid()) | ||||||
|  | @ -334,7 +334,7 @@ int Process::do_exec(String path, Vector<String> arguments, Vector<String> envir | ||||||
| 
 | 
 | ||||||
|     auto vmo = VMObject::create_file_backed(description->inode()); |     auto vmo = VMObject::create_file_backed(description->inode()); | ||||||
|     vmo->set_name(description->absolute_path()); |     vmo->set_name(description->absolute_path()); | ||||||
|     RetainPtr<Region> region = allocate_region_with_vmo(VirtualAddress(), metadata.size, vmo.copy_ref(), 0, vmo->name(), PROT_READ); |     RefPtr<Region> region = allocate_region_with_vmo(VirtualAddress(), metadata.size, vmo.copy_ref(), 0, vmo->name(), PROT_READ); | ||||||
|     ASSERT(region); |     ASSERT(region); | ||||||
| 
 | 
 | ||||||
|     if (this != ¤t->process()) { |     if (this != ¤t->process()) { | ||||||
|  | @ -516,7 +516,7 @@ Process* Process::create_user_process(const String& path, uid_t uid, gid_t gid, | ||||||
|     if (arguments.is_empty()) { |     if (arguments.is_empty()) { | ||||||
|         arguments.append(parts.last()); |         arguments.append(parts.last()); | ||||||
|     } |     } | ||||||
|     RetainPtr<Custody> cwd; |     RefPtr<Custody> cwd; | ||||||
|     { |     { | ||||||
|         InterruptDisabler disabler; |         InterruptDisabler disabler; | ||||||
|         if (auto* parent = Process::from_pid(parent_pid)) |         if (auto* parent = Process::from_pid(parent_pid)) | ||||||
|  | @ -562,7 +562,7 @@ Process* Process::create_kernel_process(String&& name, void (*e)()) | ||||||
|     return process; |     return process; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Process::Process(String&& name, uid_t uid, gid_t gid, pid_t ppid, RingLevel ring, RetainPtr<Custody>&& cwd, RetainPtr<Custody>&& executable, TTY* tty, Process* fork_parent) | Process::Process(String&& name, uid_t uid, gid_t gid, pid_t ppid, RingLevel ring, RefPtr<Custody>&& cwd, RefPtr<Custody>&& executable, TTY* tty, Process* fork_parent) | ||||||
|     : m_name(move(name)) |     : m_name(move(name)) | ||||||
|     , m_pid(next_pid++) // FIXME: RACE: This variable looks racy!
 |     , m_pid(next_pid++) // FIXME: RACE: This variable looks racy!
 | ||||||
|     , m_uid(uid) |     , m_uid(uid) | ||||||
|  | @ -2445,7 +2445,7 @@ struct SharedBuffer { | ||||||
|     Region* m_pid2_region { nullptr }; |     Region* m_pid2_region { nullptr }; | ||||||
|     bool m_pid1_writable { false }; |     bool m_pid1_writable { false }; | ||||||
|     bool m_pid2_writable { false }; |     bool m_pid2_writable { false }; | ||||||
|     Retained<VMObject> m_vmo; |     NonnullRefPtr<VMObject> m_vmo; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static int s_next_shared_buffer_id; | static int s_next_shared_buffer_id; | ||||||
|  | @ -2734,7 +2734,7 @@ void Process::FileDescriptionAndFlags::clear() | ||||||
|     flags = 0; |     flags = 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Process::FileDescriptionAndFlags::set(Retained<FileDescription>&& d, dword f) | void Process::FileDescriptionAndFlags::set(NonnullRefPtr<FileDescription>&& d, dword f) | ||||||
| { | { | ||||||
|     description = move(d); |     description = move(d); | ||||||
|     flags = f; |     flags = f; | ||||||
|  |  | ||||||
|  | @ -211,7 +211,7 @@ public: | ||||||
|     void set_tty(TTY* tty) { m_tty = tty; } |     void set_tty(TTY* tty) { m_tty = tty; } | ||||||
| 
 | 
 | ||||||
|     size_t region_count() const { return m_regions.size(); } |     size_t region_count() const { return m_regions.size(); } | ||||||
|     const Vector<Retained<Region>>& regions() const { return m_regions; } |     const Vector<NonnullRefPtr<Region>>& regions() const { return m_regions; } | ||||||
|     void dump_regions(); |     void dump_regions(); | ||||||
| 
 | 
 | ||||||
|     ProcessTracer* tracer() { return m_tracer.ptr(); } |     ProcessTracer* tracer() { return m_tracer.ptr(); } | ||||||
|  | @ -248,8 +248,8 @@ public: | ||||||
| 
 | 
 | ||||||
|     bool is_superuser() const { return m_euid == 0; } |     bool is_superuser() const { return m_euid == 0; } | ||||||
| 
 | 
 | ||||||
|     Region* allocate_region_with_vmo(VirtualAddress, size_t, Retained<VMObject>&&, size_t offset_in_vmo, const String& name, int prot); |     Region* allocate_region_with_vmo(VirtualAddress, size_t, NonnullRefPtr<VMObject>&&, size_t offset_in_vmo, const String& name, int prot); | ||||||
|     Region* allocate_file_backed_region(VirtualAddress, size_t, RetainPtr<Inode>&&, const String& name, int prot); |     Region* allocate_file_backed_region(VirtualAddress, size_t, RefPtr<Inode>&&, const String& name, int prot); | ||||||
|     Region* allocate_region(VirtualAddress, size_t, const String& name, int prot = PROT_READ | PROT_WRITE, bool commit = true); |     Region* allocate_region(VirtualAddress, size_t, const String& name, int prot = PROT_READ | PROT_WRITE, bool commit = true); | ||||||
|     bool deallocate_region(Region& region); |     bool deallocate_region(Region& region); | ||||||
| 
 | 
 | ||||||
|  | @ -273,7 +273,7 @@ private: | ||||||
|     friend class Scheduler; |     friend class Scheduler; | ||||||
|     friend class Region; |     friend class Region; | ||||||
| 
 | 
 | ||||||
|     Process(String&& name, uid_t, gid_t, pid_t ppid, RingLevel, RetainPtr<Custody>&& cwd = nullptr, RetainPtr<Custody>&& executable = nullptr, TTY* = nullptr, Process* fork_parent = nullptr); |     Process(String&& name, uid_t, gid_t, pid_t ppid, RingLevel, RefPtr<Custody>&& cwd = nullptr, RefPtr<Custody>&& executable = nullptr, TTY* = nullptr, Process* fork_parent = nullptr); | ||||||
| 
 | 
 | ||||||
|     Range allocate_range(VirtualAddress, size_t); |     Range allocate_range(VirtualAddress, size_t); | ||||||
| 
 | 
 | ||||||
|  | @ -287,7 +287,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     Thread* m_main_thread { nullptr }; |     Thread* m_main_thread { nullptr }; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<PageDirectory> m_page_directory; |     RefPtr<PageDirectory> m_page_directory; | ||||||
| 
 | 
 | ||||||
|     Process* m_prev { nullptr }; |     Process* m_prev { nullptr }; | ||||||
|     Process* m_next { nullptr }; |     Process* m_next { nullptr }; | ||||||
|  | @ -307,8 +307,8 @@ private: | ||||||
|     struct FileDescriptionAndFlags { |     struct FileDescriptionAndFlags { | ||||||
|         operator bool() const { return !!description; } |         operator bool() const { return !!description; } | ||||||
|         void clear(); |         void clear(); | ||||||
|         void set(Retained<FileDescription>&& d, dword f = 0); |         void set(NonnullRefPtr<FileDescription>&& d, dword f = 0); | ||||||
|         RetainPtr<FileDescription> description; |         RefPtr<FileDescription> description; | ||||||
|         dword flags { 0 }; |         dword flags { 0 }; | ||||||
|     }; |     }; | ||||||
|     Vector<FileDescriptionAndFlags> m_fds; |     Vector<FileDescriptionAndFlags> m_fds; | ||||||
|  | @ -319,14 +319,14 @@ private: | ||||||
|     byte m_termination_status { 0 }; |     byte m_termination_status { 0 }; | ||||||
|     byte m_termination_signal { 0 }; |     byte m_termination_signal { 0 }; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Custody> m_executable; |     RefPtr<Custody> m_executable; | ||||||
|     RetainPtr<Custody> m_cwd; |     RefPtr<Custody> m_cwd; | ||||||
| 
 | 
 | ||||||
|     TTY* m_tty { nullptr }; |     TTY* m_tty { nullptr }; | ||||||
| 
 | 
 | ||||||
|     Region* region_from_range(VirtualAddress, size_t); |     Region* region_from_range(VirtualAddress, size_t); | ||||||
| 
 | 
 | ||||||
|     Vector<Retained<Region>> m_regions; |     Vector<NonnullRefPtr<Region>> m_regions; | ||||||
| 
 | 
 | ||||||
|     VirtualAddress m_return_to_ring3_from_signal_trampoline; |     VirtualAddress m_return_to_ring3_from_signal_trampoline; | ||||||
|     VirtualAddress m_return_to_ring0_from_signal_trampoline; |     VirtualAddress m_return_to_ring0_from_signal_trampoline; | ||||||
|  | @ -345,7 +345,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     unsigned m_syscall_count { 0 }; |     unsigned m_syscall_count { 0 }; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<ProcessTracer> m_tracer; |     RefPtr<ProcessTracer> m_tracer; | ||||||
|     OwnPtr<ELFLoader> m_elf_loader; |     OwnPtr<ELFLoader> m_elf_loader; | ||||||
| 
 | 
 | ||||||
|     Lock m_big_lock { "Process" }; |     Lock m_big_lock { "Process" }; | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| class ProcessTracer : public File { | class ProcessTracer : public File { | ||||||
| public: | public: | ||||||
|     static Retained<ProcessTracer> create(pid_t pid) { return adopt(*new ProcessTracer(pid)); } |     static NonnullRefPtr<ProcessTracer> create(pid_t pid) { return adopt(*new ProcessTracer(pid)); } | ||||||
|     virtual ~ProcessTracer() override; |     virtual ~ProcessTracer() override; | ||||||
| 
 | 
 | ||||||
|     bool is_dead() const { return m_dead; } |     bool is_dead() const { return m_dead; } | ||||||
|  |  | ||||||
|  | @ -4,15 +4,15 @@ | ||||||
| #include <Kernel/SharedMemory.h> | #include <Kernel/SharedMemory.h> | ||||||
| #include <Kernel/VM/VMObject.h> | #include <Kernel/VM/VMObject.h> | ||||||
| 
 | 
 | ||||||
| Lockable<HashMap<String, RetainPtr<SharedMemory>>>& shared_memories() | Lockable<HashMap<String, RefPtr<SharedMemory>>>& shared_memories() | ||||||
| { | { | ||||||
|     static Lockable<HashMap<String, RetainPtr<SharedMemory>>>* map; |     static Lockable<HashMap<String, RefPtr<SharedMemory>>>* map; | ||||||
|     if (!map) |     if (!map) | ||||||
|         map = new Lockable<HashMap<String, RetainPtr<SharedMemory>>>; |         map = new Lockable<HashMap<String, RefPtr<SharedMemory>>>; | ||||||
|     return *map; |     return *map; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| KResultOr<Retained<SharedMemory>> SharedMemory::open(const String& name, int flags, mode_t mode) | KResultOr<NonnullRefPtr<SharedMemory>> SharedMemory::open(const String& name, int flags, mode_t mode) | ||||||
| { | { | ||||||
|     UNUSED_PARAM(flags); |     UNUSED_PARAM(flags); | ||||||
|     LOCKER(shared_memories().lock()); |     LOCKER(shared_memories().lock()); | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ class VMObject; | ||||||
| 
 | 
 | ||||||
| class SharedMemory : public File { | class SharedMemory : public File { | ||||||
| public: | public: | ||||||
|     static KResultOr<Retained<SharedMemory>> open(const String& name, int flags, mode_t); |     static KResultOr<NonnullRefPtr<SharedMemory>> open(const String& name, int flags, mode_t); | ||||||
|     static KResult unlink(const String& name); |     static KResult unlink(const String& name); | ||||||
|     virtual ~SharedMemory() override; |     virtual ~SharedMemory() override; | ||||||
| 
 | 
 | ||||||
|  | @ -39,5 +39,5 @@ private: | ||||||
|     uid_t m_uid { 0 }; |     uid_t m_uid { 0 }; | ||||||
|     gid_t m_gid { 0 }; |     gid_t m_gid { 0 }; | ||||||
|     mode_t m_mode { 0 }; |     mode_t m_mode { 0 }; | ||||||
|     RetainPtr<VMObject> m_vmo; |     RefPtr<VMObject> m_vmo; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -29,7 +29,7 @@ private: | ||||||
|     virtual int ioctl(FileDescription&, unsigned request, unsigned arg) override; |     virtual int ioctl(FileDescription&, unsigned request, unsigned arg) override; | ||||||
|     virtual const char* class_name() const override { return "MasterPTY"; } |     virtual const char* class_name() const override { return "MasterPTY"; } | ||||||
| 
 | 
 | ||||||
|     RetainPtr<SlavePTY> m_slave; |     RefPtr<SlavePTY> m_slave; | ||||||
|     unsigned m_index; |     unsigned m_index; | ||||||
|     bool m_closed { false }; |     bool m_closed { false }; | ||||||
|     DoubleBuffer m_buffer; |     DoubleBuffer m_buffer; | ||||||
|  |  | ||||||
|  | @ -28,7 +28,7 @@ PTYMultiplexer::~PTYMultiplexer() | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| KResultOr<Retained<FileDescription>> PTYMultiplexer::open(int options) | KResultOr<NonnullRefPtr<FileDescription>> PTYMultiplexer::open(int options) | ||||||
| { | { | ||||||
|     UNUSED_PARAM(options); |     UNUSED_PARAM(options); | ||||||
|     LOCKER(m_lock); |     LOCKER(m_lock); | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ public: | ||||||
|     static PTYMultiplexer& the(); |     static PTYMultiplexer& the(); | ||||||
| 
 | 
 | ||||||
|     // ^CharacterDevice
 |     // ^CharacterDevice
 | ||||||
|     virtual KResultOr<Retained<FileDescription>> open(int options) override; |     virtual KResultOr<NonnullRefPtr<FileDescription>> open(int options) override; | ||||||
|     virtual ssize_t read(FileDescription&, byte*, ssize_t) override { return 0; } |     virtual ssize_t read(FileDescription&, byte*, ssize_t) override { return 0; } | ||||||
|     virtual ssize_t write(FileDescription&, const byte*, ssize_t) override { return 0; } |     virtual ssize_t write(FileDescription&, const byte*, ssize_t) override { return 0; } | ||||||
|     virtual bool can_read(FileDescription&) const override { return true; } |     virtual bool can_read(FileDescription&) const override { return true; } | ||||||
|  |  | ||||||
|  | @ -30,7 +30,7 @@ private: | ||||||
|     friend class MasterPTY; |     friend class MasterPTY; | ||||||
|     SlavePTY(MasterPTY&, unsigned index); |     SlavePTY(MasterPTY&, unsigned index); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<MasterPTY> m_master; |     RefPtr<MasterPTY> m_master; | ||||||
|     unsigned m_index; |     unsigned m_index; | ||||||
|     InodeIdentifier m_devpts_inode_id; |     InodeIdentifier m_devpts_inode_id; | ||||||
|     String m_tty_name; |     String m_tty_name; | ||||||
|  |  | ||||||
|  | @ -176,10 +176,10 @@ private: | ||||||
|     dword m_pending_signals { 0 }; |     dword m_pending_signals { 0 }; | ||||||
|     dword m_signal_mask { 0 }; |     dword m_signal_mask { 0 }; | ||||||
|     dword m_kernel_stack_base { 0 }; |     dword m_kernel_stack_base { 0 }; | ||||||
|     RetainPtr<Region> m_kernel_stack_region; |     RefPtr<Region> m_kernel_stack_region; | ||||||
|     RetainPtr<Region> m_kernel_stack_for_signal_handler_region; |     RefPtr<Region> m_kernel_stack_for_signal_handler_region; | ||||||
|     pid_t m_waitee_pid { -1 }; |     pid_t m_waitee_pid { -1 }; | ||||||
|     RetainPtr<FileDescription> m_blocked_description; |     RefPtr<FileDescription> m_blocked_description; | ||||||
|     timeval m_select_timeout; |     timeval m_select_timeout; | ||||||
|     SignalActionData m_signal_action_data[32]; |     SignalActionData m_signal_action_data[32]; | ||||||
|     Region* m_signal_stack_user_region { nullptr }; |     Region* m_signal_stack_user_region { nullptr }; | ||||||
|  |  | ||||||
|  | @ -81,7 +81,7 @@ void MemoryManager::initialize_paging() | ||||||
| #endif | #endif | ||||||
|     m_quickmap_addr = VirtualAddress((1 * MB) - PAGE_SIZE); |     m_quickmap_addr = VirtualAddress((1 * MB) - PAGE_SIZE); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<PhysicalRegion> region = nullptr; |     RefPtr<PhysicalRegion> region = nullptr; | ||||||
|     bool region_is_super = false; |     bool region_is_super = false; | ||||||
| 
 | 
 | ||||||
|     for (auto* mmap = (multiboot_memory_map_t*)multiboot_info_ptr->mmap_addr; (unsigned long)mmap < multiboot_info_ptr->mmap_addr + multiboot_info_ptr->mmap_length; mmap = (multiboot_memory_map_t*)((unsigned long)mmap + mmap->size + sizeof(mmap->size))) { |     for (auto* mmap = (multiboot_memory_map_t*)multiboot_info_ptr->mmap_addr; (unsigned long)mmap < multiboot_info_ptr->mmap_addr + multiboot_info_ptr->mmap_length; mmap = (multiboot_memory_map_t*)((unsigned long)mmap + mmap->size + sizeof(mmap->size))) { | ||||||
|  | @ -151,7 +151,7 @@ void MemoryManager::initialize_paging() | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<PhysicalPage> MemoryManager::allocate_page_table(PageDirectory& page_directory, unsigned index) | RefPtr<PhysicalPage> MemoryManager::allocate_page_table(PageDirectory& page_directory, unsigned index) | ||||||
| { | { | ||||||
|     ASSERT(!page_directory.m_physical_pages.contains(index)); |     ASSERT(!page_directory.m_physical_pages.contains(index)); | ||||||
|     auto physical_page = allocate_supervisor_physical_page(); |     auto physical_page = allocate_supervisor_physical_page(); | ||||||
|  | @ -444,7 +444,7 @@ PageFaultResponse MemoryManager::handle_page_fault(const PageFault& fault) | ||||||
|     return PageFaultResponse::ShouldCrash; |     return PageFaultResponse::ShouldCrash; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<Region> MemoryManager::allocate_kernel_region(size_t size, String&& name) | RefPtr<Region> MemoryManager::allocate_kernel_region(size_t size, String&& name) | ||||||
| { | { | ||||||
|     InterruptDisabler disabler; |     InterruptDisabler disabler; | ||||||
| 
 | 
 | ||||||
|  | @ -478,11 +478,11 @@ void MemoryManager::deallocate_user_physical_page(PhysicalPage&& page) | ||||||
|     ASSERT_NOT_REACHED(); |     ASSERT_NOT_REACHED(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<PhysicalPage> MemoryManager::allocate_user_physical_page(ShouldZeroFill should_zero_fill) | RefPtr<PhysicalPage> MemoryManager::allocate_user_physical_page(ShouldZeroFill should_zero_fill) | ||||||
| { | { | ||||||
|     InterruptDisabler disabler; |     InterruptDisabler disabler; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<PhysicalPage> page = nullptr; |     RefPtr<PhysicalPage> page = nullptr; | ||||||
| 
 | 
 | ||||||
|     for (auto& region : m_user_physical_regions) { |     for (auto& region : m_user_physical_regions) { | ||||||
|         page = region->take_free_page(false); |         page = region->take_free_page(false); | ||||||
|  | @ -535,11 +535,11 @@ void MemoryManager::deallocate_supervisor_physical_page(PhysicalPage&& page) | ||||||
|     ASSERT_NOT_REACHED(); |     ASSERT_NOT_REACHED(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RetainPtr<PhysicalPage> MemoryManager::allocate_supervisor_physical_page() | RefPtr<PhysicalPage> MemoryManager::allocate_supervisor_physical_page() | ||||||
| { | { | ||||||
|     InterruptDisabler disabler; |     InterruptDisabler disabler; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<PhysicalPage> page = nullptr; |     RefPtr<PhysicalPage> page = nullptr; | ||||||
| 
 | 
 | ||||||
|     for (auto& region : m_super_physical_regions) { |     for (auto& region : m_super_physical_regions) { | ||||||
|         page = region->take_free_page(true); |         page = region->take_free_page(true); | ||||||
|  |  | ||||||
|  | @ -61,8 +61,8 @@ public: | ||||||
|         Yes |         Yes | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     RetainPtr<PhysicalPage> allocate_user_physical_page(ShouldZeroFill); |     RefPtr<PhysicalPage> allocate_user_physical_page(ShouldZeroFill); | ||||||
|     RetainPtr<PhysicalPage> allocate_supervisor_physical_page(); |     RefPtr<PhysicalPage> allocate_supervisor_physical_page(); | ||||||
|     void deallocate_user_physical_page(PhysicalPage&&); |     void deallocate_user_physical_page(PhysicalPage&&); | ||||||
|     void deallocate_supervisor_physical_page(PhysicalPage&&); |     void deallocate_supervisor_physical_page(PhysicalPage&&); | ||||||
| 
 | 
 | ||||||
|  | @ -70,7 +70,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     void map_for_kernel(VirtualAddress, PhysicalAddress); |     void map_for_kernel(VirtualAddress, PhysicalAddress); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<Region> allocate_kernel_region(size_t, String&& name); |     RefPtr<Region> allocate_kernel_region(size_t, String&& name); | ||||||
|     void map_region_at_address(PageDirectory&, Region&, VirtualAddress, bool user_accessible); |     void map_region_at_address(PageDirectory&, Region&, VirtualAddress, bool user_accessible); | ||||||
| 
 | 
 | ||||||
|     unsigned user_physical_pages() const { return m_user_physical_pages; } |     unsigned user_physical_pages() const { return m_user_physical_pages; } | ||||||
|  | @ -93,7 +93,7 @@ private: | ||||||
|     void flush_entire_tlb(); |     void flush_entire_tlb(); | ||||||
|     void flush_tlb(VirtualAddress); |     void flush_tlb(VirtualAddress); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<PhysicalPage> allocate_page_table(PageDirectory&, unsigned index); |     RefPtr<PhysicalPage> allocate_page_table(PageDirectory&, unsigned index); | ||||||
| 
 | 
 | ||||||
|     void map_protected(VirtualAddress, size_t length); |     void map_protected(VirtualAddress, size_t length); | ||||||
| 
 | 
 | ||||||
|  | @ -214,7 +214,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     PageTableEntry ensure_pte(PageDirectory&, VirtualAddress); |     PageTableEntry ensure_pte(PageDirectory&, VirtualAddress); | ||||||
| 
 | 
 | ||||||
|     RetainPtr<PageDirectory> m_kernel_page_directory; |     RefPtr<PageDirectory> m_kernel_page_directory; | ||||||
|     dword* m_page_table_zero { nullptr }; |     dword* m_page_table_zero { nullptr }; | ||||||
|     dword* m_page_table_one { nullptr }; |     dword* m_page_table_one { nullptr }; | ||||||
| 
 | 
 | ||||||
|  | @ -225,8 +225,8 @@ private: | ||||||
|     unsigned m_super_physical_pages { 0 }; |     unsigned m_super_physical_pages { 0 }; | ||||||
|     unsigned m_super_physical_pages_used { 0 }; |     unsigned m_super_physical_pages_used { 0 }; | ||||||
| 
 | 
 | ||||||
|     Vector<Retained<PhysicalRegion>> m_user_physical_regions {}; |     Vector<NonnullRefPtr<PhysicalRegion>> m_user_physical_regions {}; | ||||||
|     Vector<Retained<PhysicalRegion>> m_super_physical_regions {}; |     Vector<NonnullRefPtr<PhysicalRegion>> m_super_physical_regions {}; | ||||||
| 
 | 
 | ||||||
|     HashTable<VMObject*> m_vmos; |     HashTable<VMObject*> m_vmos; | ||||||
|     HashTable<Region*> m_user_regions; |     HashTable<Region*> m_user_regions; | ||||||
|  |  | ||||||
|  | @ -10,8 +10,8 @@ class PageDirectory : public RefCounted<PageDirectory> { | ||||||
|     friend class MemoryManager; |     friend class MemoryManager; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     static Retained<PageDirectory> create_for_userspace(const RangeAllocator* parent_range_allocator = nullptr) { return adopt(*new PageDirectory(parent_range_allocator)); } |     static NonnullRefPtr<PageDirectory> create_for_userspace(const RangeAllocator* parent_range_allocator = nullptr) { return adopt(*new PageDirectory(parent_range_allocator)); } | ||||||
|     static Retained<PageDirectory> create_at_fixed_address(PhysicalAddress paddr) { return adopt(*new PageDirectory(paddr)); } |     static NonnullRefPtr<PageDirectory> create_at_fixed_address(PhysicalAddress paddr) { return adopt(*new PageDirectory(paddr)); } | ||||||
|     ~PageDirectory(); |     ~PageDirectory(); | ||||||
| 
 | 
 | ||||||
|     dword cr3() const { return m_directory_page->paddr().get(); } |     dword cr3() const { return m_directory_page->paddr().get(); } | ||||||
|  | @ -26,6 +26,6 @@ private: | ||||||
|     explicit PageDirectory(PhysicalAddress); |     explicit PageDirectory(PhysicalAddress); | ||||||
| 
 | 
 | ||||||
|     RangeAllocator m_range_allocator; |     RangeAllocator m_range_allocator; | ||||||
|     RetainPtr<PhysicalPage> m_directory_page; |     RefPtr<PhysicalPage> m_directory_page; | ||||||
|     HashMap<unsigned, RetainPtr<PhysicalPage>> m_physical_pages; |     HashMap<unsigned, RefPtr<PhysicalPage>> m_physical_pages; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
| #include <Kernel/VM/PhysicalPage.h> | #include <Kernel/VM/PhysicalPage.h> | ||||||
| #include <Kernel/kmalloc.h> | #include <Kernel/kmalloc.h> | ||||||
| 
 | 
 | ||||||
| Retained<PhysicalPage> PhysicalPage::create(PhysicalAddress paddr, bool supervisor, bool may_return_to_freelist) | NonnullRefPtr<PhysicalPage> PhysicalPage::create(PhysicalAddress paddr, bool supervisor, bool may_return_to_freelist) | ||||||
| { | { | ||||||
|     void* slot = kmalloc(sizeof(PhysicalPage)); |     void* slot = kmalloc(sizeof(PhysicalPage)); | ||||||
|     new (slot) PhysicalPage(paddr, supervisor, may_return_to_freelist); |     new (slot) PhysicalPage(paddr, supervisor, may_return_to_freelist); | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling